日期:2014-05-17  浏览次数:20588 次

合并行
我的表示这样的
人员  工资
张三   10
李四   20
王五   10
111   30
222   40
333   50
444   123
AAA   10
BBB   20
CCC   30
DDD   40
要将张三李四的工资合并 并用张三的名字代替人员
将AAA,BBB,CCC,DDD的工资合并 用EEE来代替人员
结果
人员  工资
张三   30
王五   10
111   30
222   40
333   50
444   123
EEE   100
我之前用的方法是
select 张三 '人员',sum(工资) '工资' from tb where 人员='张三' or 人员='李四'
union all
select EEE '人员',sum(工资) '工资' from tb where 人员 IN [AAA,BBB,CCC,DDD]
union all
select * from tb where 人员 <>张三 and 人员 <>李四 and 人员 <>AAA and 人员 <>BBB and
人员 <>CCC AND 人员 <>DDD
这个方法很麻烦,有没有简单一点的
------解决方案--------------------
你写的没问题,看上语句有点多,但是如果你要写的更加简单,可能就不容易理解了
------解决方案--------------------
SELECT 人员,sum(工资) 工资
FROM (
SELECT  CASE  WHEN 人员 in('张三','李四') then '张三' 
WHEN 人员 in('AAA','BBB','CCC','DDD') THEN 'EEE' 
ELSE 人员 END 人员,工资
FROM  [Table]
) AA
GROUP BY 人员