当前位置: 代码迷 >> Sql Server >> 通过SQL代码怎么得到以下汇总数据
  详细解决方案

通过SQL代码怎么得到以下汇总数据

热度:109   发布时间:2016-04-24 08:48:14.0
通过SQL代码如何得到以下汇总数据
人员编号 消费日期 餐类 消费金额
02407 12.09.2015 07:39 早餐 1
02407 13.09.2015 12:03 午餐 5
02407 14.09.2015 08:00 早餐 2
02579 01.09.2015 17:25 晚餐 5
05218 22.09.2015 12:18 午餐 5
05226 01.09.2015 12:21 午餐 5
05226 01.09.2015 17:28 晚餐 5
05226 07.09.2015 07:12 早餐 4
05226 12.09.2015 08:43 早餐 9.5
05226 14.09.2015 17:37 晚餐 5
05226 21.09.2015 12:13 午餐 5
05226 22.09.2015 12:17 午餐 5
通过SQL代码如何得到以下汇总数据
人员编号 早餐(一共金额) 午餐(一共金额) 晚餐(一共金额)
02407
02579
05226

------解决思路----------------------
Select distinct userid
from table t
Left join (select userid,sum(money) from table where types='早餐' Group by userid) a  on a.userid=t.userid
...午餐
...晚餐
------解决思路----------------------
select 人员编号 
,sum(case when 餐类 = '早餐' then 消费金额 else 0 end) 早餐
,sum(case when 餐类 = '午餐' then 消费金额 else 0 end) 午餐
,sum(case when 餐类 = '晚餐' then 消费金额 else 0 end) 晚餐
from tb1
group by 人员编号

------解决思路----------------------

SELECT
人员编号 AS 人员编号,
SUM(CASE 餐类 WHEN '早餐' THEN 消费金额 ELSE 0 END) AS 早餐,
SUM(CASE 餐类 WHEN '中餐' THEN 消费金额 ELSE 0 END) AS 中餐,
SUM(CASE 餐类 WHEN '晚餐' THEN 消费金额 ELSE 0 END) AS 晚餐
FROM TEMP_TABLE
GROUP BY 人员编号
GO
  相关解决方案