日期:2014-05-18  浏览次数:20484 次

SQL 中合并多行数据
现有数据表:  
id     name   count  
001   北京   2  
001   北京海淀   3  
002   上海   4  
003   广州   5  
...  

需要将id相同的行合并,count相加,name选择长度最短的,合并后的效果如下:  
001   北京   5  
002   上海   4  
003   广州   5  
...  
请大家指点,谢谢!

------解决方案--------------------
declare @t table(id char(3),[name] varchar(10),[count] int)
insert @t
select '001 ', '北京 ',2 union all
select '001 ', '北京海淀 ',3 union all
select '002 ', '上海 ',4 union all
select '003 ', '广州 ',5


select id,min(name) as name ,sum(count) as count
from @t
group by id

/*


(所影响的行数为 4 行)

id name count
---- ---------- -----------
001 北京 5
002 上海 4
003 广州 5

(所影响的行数为 3 行)


*/