数据如上图,想要的结果是这样的,根据id分组,然后判断条件是lend_time,如果lend_time有值,那就求和principal并显示,如果lend_time为空,则显示为0,但是问题是id为1的lend_time只有一个,principal却有2个,而我显示的时候只能显示1000,而不是6000(1000+5000),也就是说有lend_time值的时候才求和,没有lend_time则加入的值为0,求大神帮忙。

解决方案 »

  1.   

       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://bbs.csdn.net/topics/320211382
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。
      

  2.   

    select id, sum(principal) from tb where id in ( select id from tb where lend_time is not null )
      

  3.   

    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
    大概是这样吧,其实很简单,就是你的题设说的不清楚
      

  4.   

    他还要lend_time为空的时候principal显示0
      

  5.   

    select id, case when max(lend_time) is null then 0 else sum(principal) end from tb group by id 
      

  6.   


    结帖率: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
      

  7.   

    SELECT id,CASE WHEN lend_time IS NULL THEN 0 ELSE principal END AS principal
    FROM tbl_name
    GROUP BY id
      

  8.   

    试下这个
    SELECT id,
    SUM(CASE WHEN lend_time IS NULL THEN 0 
    ELSE principal 
    END) AS principal
    FROM Table
    GROUP BY id
      

  9.   

    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;