人员编号 消费日期 餐类 消费金额
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