
資料如上圖,想要的結果是這樣的,根據id分組,然后判斷條件是lend_time,如果lend_time有值,那就求和principal并顯示,如果lend_time為空,則顯示為0,但是問題是id為1的lend_time只有一個,principal卻有2個,而我顯示的時候只能顯示1000,而不是6000(1000+5000),也就是說有lend_time值的時候才求和,沒有lend_time則加入的值為0,求大神幫忙。
uj5u.com熱心網友回復:
建議你列出你的表結構,并提供測驗資料以及基于這些測驗資料的所對應正確結果。參考一下這個貼子的提問方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 陳述句
2. 你的 insert into xxx ... 陳述句
3. 結果是什么樣,(并給以簡單的演算法描述)
4. 你用的資料庫名稱和版本(經常有人在MS SQL server版問 MySQL)
這樣想幫你的人可以直接搭建和你相同的環境,并在給出方案前進行測驗,避免文字描述理解上的誤差。
uj5u.com熱心網友回復:
select id, sum(principal) from tb where id in ( select id from tb where lend_time is not null )uj5u.com熱心網友回復:
SELECT IF(ISNULL(a),0,b) AS b FROM (
SELECT SUM(UNIX_TIMESTAMP(lend_time)) AS a,SUM(principal) AS b
FROM test
GROUP BY id
) AS t
大概是這樣吧,其實很簡單,就是你的題設說的不清楚
uj5u.com熱心網友回復:
他還要lend_time為空的時候principal顯示0
uj5u.com熱心網友回復:
select id, case when max(lend_time) is null then 0 else sum(principal) end from tb group by id
uj5u.com熱心網友回復:
結帖率:0%
當您的問題得到解答后請及時結貼.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html
8、如何給分和結貼?
http://bbs.csdn.net/help#post_dispose
uj5u.com熱心網友回復:
非常感謝兩位的解答,但是我測驗了一下還是不對,我需要的結果是這樣的
uj5u.com熱心網友回復:
SELECT id,CASE WHEN lend_time IS NULL THEN 0 ELSE principal END AS principalFROM tbl_name
GROUP BY id
uj5u.com熱心網友回復:
試下這個SELECT id,
SUM(CASE WHEN lend_time IS NULL THEN 0
ELSE principal
END) AS principal
FROM Table
GROUP BY id
uj5u.com熱心網友回復:
SELECT
t.id,
CASE
WHEN t.lend_time IS NULL THEN 0
ELSE t.principal
END total
FROM
(SELECT
a.id, a.lend_time, a.principal
FROM
test_qty1 a
GROUP BY a.id) t;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/106496.html
標籤:MySQL
