首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

合并行解决思路

2014-01-23 
合并行我的表示这样的人员工资张三10李四20王五10111302224033350444123AAA10BBB20CCC30DDD40要将张三李四

合并行
我的表示这样的
人员  工资
张三   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 人员

热点排行