数据如上图,想要的结果是这样的,根据id分组,然后判断条件是lend_time,如果lend_time有值,那就求和principal并显示,如果lend_time为空,则显示为0,但是问题是id为1的lend_time只有一个,principal却有2个,而我显示的时候只能显示1000,而不是6000(1000+5000),也就是说有lend_time值的时候才求和,没有lend_time则加入的值为0,求大神帮忙。
调试欢乐多
参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
1. 你的 create table xxx .. 语句
2. 你的 insert into xxx ... 语句
3. 结果是什么样,(并给以简单的算法描述)
4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
SELECT SUM(UNIX_TIMESTAMP(lend_time)) AS a,SUM(principal) AS b
FROM test
GROUP BY id
) AS t
大概是这样吧,其实很简单,就是你的题设说的不清楚
结帖率: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.html8、如何给分和结贴?
http://bbs.csdn.net/help#post_dispose
FROM tbl_name
GROUP BY id
SELECT id,
SUM(CASE WHEN lend_time IS NULL THEN 0
ELSE principal
END) AS principal
FROM Table
GROUP BY id
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;