当前位置: 代码迷 >> Sql Server >> SQL总计其中2行
  详细解决方案

SQL总计其中2行

热度:66   发布时间:2016-04-24 10:09:44.0
SQL合计其中2行
id   time         bm      fy
1   2010-1-2  A部   200
2   2010-1-5  B部   500
4   2010-1-5  C部   500
3   2010-3-5  D部   400
5   2010-1-5  F部   400

我有这样一个表,想将A部和B部的fy合计在一起,最后想要结果是:
id   time         bm      fy
1   2010-1-2  A+B部   700
2   2010-1-5  C部   500
3   2010-3-5  D部   400
4   2010-1-5  F部   400
------解决方案--------------------
没有什么规则?
------解决方案--------------------
select  id,[time],case when bm='A部' then 'A+B部 ' else bm end as bm ,
case when bm='A部' then (select sum(fy) from 表 where bm in('A部','B部')) else 
 fy end as fy
 from 表 where bm!='B部'


------解决方案--------------------

WITH a1 (id,time,bm,fy) AS
(
SELECT 1,'2010-1-2','A部',200 UNION ALL
SELECT 2,'2010-1-5','B部',500 UNION ALL
SELECT 4,'2010-1-5','C部',500 UNION ALL
SELECT 3,'2010-3-5','D部',400 UNION ALL
SELECT 5,'2010-1-5','F部',400
)
,a2 AS
(
SELECT MIN(time) time,CASE WHEN bm IN ('A部','B部') THEN 'A+B部' ELSE bm END bm,SUM(fy) fy
FROM a1
GROUP BY CASE WHEN bm IN ('A部','B部') THEN 'A+B部' ELSE bm END
)
SELECT ROW_NUMBER() OVER(ORDER BY @@SERVERNAME) id,*
FROM a2
  相关解决方案