有一个问题请教下各位大神。
就是我想统计我数据库里面,相同月份,相同产品类型的生产点数。
然后,可以使用以下语句。
select 产品类型,sum(生产点数) as生产点数,月份
from dbo.SMT生产报表 group by 产品类型,月份
但是现在有一个条件限制,就是我数据库产品类型里面,有5个种类别
SR/T,SR/S,SR/B,SPWC,SKWC
现在呢,上头要求,SR/T跟SR/S需要统计在一起
也就是产品类型变成了4种来统计(实际数据库里面还是5种),
即,SR/T跟SR/S做为相同一种类型SR/T来统计了。
*********************
没分了。。。。帮帮忙,谢谢啊。
------解决思路----------------------
用CASE 把它们当成同一种情况处理即可,你参考一下
select CASE 产品类型 WHEN 'SR/T' THEN 'SR/T AND SR/S' WHEN 'SR/S' THEN 'SR/T AND SR/S' ELSE 产品类型 END[产品类型],sum(生产点数) as生产点数,月份
from dbo.SMT生产报表 group by CASE 产品类型 WHEN 'SR/T' THEN 'SR/T AND SR/S' WHEN 'SR/S' THEN 'SR/T AND SR/S' ELSE 产品类型 END,月份
------解决思路----------------------
SELECT 产品类型=CASE WHEN [产品类型] IN('SR/T','SR/S') THEN 'SR/T+SR/S' ELSE [产品类型] END
,SUM(生产点数) as生产点数
,月份
FROM dbo.SMT生产报表
GROUP BY CASE WHEN [产品类型] IN('SR/T','SR/S') THEN 'SR/T+SR/S' ELSE [产品类型] END
,月份
------解决思路----------------------
只要做 SR/S 到 SR/T 的转换就可以了。
实际上这种归类统计做个转换的小字典会很方便,随便怎么合并都可以。
WITH 归类(类型,统计类型) AS (
SELECT 'SR/T','SR/T' UNION ALL
SELECT 'SR/S','SR/T' UNION ALL
SELECT 'SR/B','SR/B' UNION ALL
SELECT 'SPWC','SPWC' UNION ALL
SELECT 'SKWC','SKWC'
)
select c.统计类型 as 产品类型,
sum(s.生产点数) as 生产点数,
s.月份
from dbo.SMT生产报表 s
JOIN 归类 c
ON c.类型 = s.产品类型
group by c.统计类型,s.月份