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

后续提问,帮忙写个排重统计的SQL查询,谢谢各位!
列1 列2 列3 列4
UCE0034904 G001920 边用边学 高志清,宋雪岩
UCE0034904 G001921 边用边学 高志清,宋雪岩
UCE0034904 G001922 边用边学 高志清,宋雪岩
UCE0034904 G001923 边用边学 高志清,宋雪岩
UCE0034904 G001924 边用边学 高志清,宋雪岩
UCE0036832 G001925 Delphi 6 飞思科技产品研发中心
UCE0036832 G001926 Delphi 6 飞思科技产品研发中心
UCE0036832 G001927 Delphi 6 飞思科技产品研发中心
UCE0036832 G001928 Delphi 6 飞思科技产品研发中心
UCE0036832 G001929 Delphi 6 飞思科技产品研发中心
UCE0036832 G001930 Delphi 6 飞思科技产品研发中心

想要的结果是这样的:
列1 列2 列3 列4 列5
UCE0034904 G001920-G001924 边用边学 高志清,宋雪岩 5
UCE0036832 G001925-G001930 Delphi 6 飞思科技产品研发中心 6

------解决方案--------------------
SQL code
SELECT 列1,MIN(列2)+'-'+MAX(列2) AS 列2,列3,列4,COUNT(*) AS 列5
FROM 表
GROUP BY 列1,列3,列4

------解决方案--------------------
SQL code

--测试数据
declare @table table(列1 varchar(10),列2 varchar(10),列3 nvarchar(10),列4 nvarchar(20))
insert into @table
select 'UCE0034904','    G001920',' 边用边学',' 高志清,宋雪岩' union all
select 'UCE0034904','    G001921',' 边用边学',' 高志清,宋雪岩' union all
select 'UCE0034904','    G001922',' 边用边学',' 高志清,宋雪岩' union all
select 'UCE0034904','    G001923',' 边用边学',' 高志清,宋雪岩' union all
select 'UCE0034904','    G001924',' 边用边学',' 高志清,宋雪岩' union all
select 'UCE0036832','    G001925','     Delphi 6',' 飞思科技产品研发中心' union all
select 'UCE0036832','    G001926','     Delphi 6',' 飞思科技产品研发中心' union all
select 'UCE0036832','    G001927','     Delphi 6',' 飞思科技产品研发中心' union all
select 'UCE0036832','    G001928','     Delphi 6',' 飞思科技产品研发中心' union all
select 'UCE0036832','    G001929','     Delphi 6',' 飞思科技产品研发中心' union all
select 'UCE0036832','    G001930','     Delphi 6',' 飞思科技产品研发中心'
--SQL语句
select 列1,min(列2)+'-'+max(列2) AS 列2,列3,列4,count(列1)as 列5 from @table group by 列1,列3,列4
--结果
/*
列1         列2                    列3         列4                   列5
---------- --------------------- ---------- -------------------- -----------
UCE0034904     G001920-G001924      边用边学       高志清,宋雪岩             5
UCE0036832     G001925-G001930      Delphi 6    飞思科技产品研发中心          6

(2 行受影响)
*/