sql查询 group by 数字类型+null 为null 处理 ,sum()的结果作为条件再次查询。

来源:互联网 发布:ubuntu官网下载地址 编辑:程序博客网 时间:2024/06/04 19:35
SELECT * from (SELECT 
(sum(r.amount) + (case when sum(red.amount) is null then 0 else sum(red.amount) end )) as a,
u.real_name,u.username,p.title from s_recharge_log AS r left  JOIN s_user AS u ON r.user_id = u.id  
LEFT JOIN s_project as p ON r.project_id = p.id LEFT JOIN s_user_redenvelope AS red ON r.recharge_no = red.recharge_no 
where 
r.add_time >= '2017-01-06 00:00:00.000000'
AND r.add_time < '2017-01-20 23:59:59.999000' 
AND r.status = 2 
AND r.user_id != 0 
 AND p.title like '%融暖%'
GROUP BY u.username
ORDER BY 
r.add_time desc) as b
where a >= 150000
;

 首先注意的是group by 要放到后面  另外 在查询结果一中 进行第二次select 查询时,
  select * from (结果集中) as (临时表名)     再判断结果集中的字段
因为要判断查询计算出来的结果集中的统计数据作为条件查询 所以 (sum(r.amount) + (case when sum(red.amount) is null then 0 else sum(red.amount) end )) as a,
命名为一个新的字段名

另当sql进行操作时, 数字类型 + null  结果为null  所以需要对   sum(red.amount)   做一个 判断处理

(case when sum(red.amount) is null then 0 else sum(red.amount) end )

如上处理


0 0
原创粉丝点击