日期:2014-05-16 浏览次数:20626 次
select A, B, C, D, E,
stuff((select ','+f from t
where t.a = tt.a and
t.b = tt.b and
t.c = tt.c and
t.d = tt.d and
t.e = tt.e
for xml path('')),1,1,'') F
from t tt
group by A, B, C, D, E
----------------------------------------------------------------
-- Author :fredrickhu(小F,向高手学习)
-- Date :2014-03-19 11:04:19
-- Verstion:
-- Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Enterprise Edition on Windows NT 6.1 <X86> (Build 7601: Service Pack 1)
--
----------------------------------------------------------------
--> 测试数据:[tb]
if object_id('[tb]') is not null drop table [tb]
go
create table [tb]([A] varchar(1),[B] varchar(1),[C] varchar(1),[D] varchar(1),[E] varchar(1),[col] varchar(2))
insert [tb]
select 'A','B','C','D','E','A1' union all
select 'A','B','C','D','E','A2' union all
select 'A','B','C','D','E','A3' union all
select 'B','C','B','B','B','B1' union all
select 'B','C','B','B','B','B2'
--------------开始查询--------------------------
go
if object_id('F_Str') is not null
drop function F_Str
go
create function F_Str(@A VARCHAR(50))
returns nvarchar(100)
as
begin
declare @S nvarchar(100)
select @S=isnull(@S+',','')+Col from Tb where A=@A
return @S
end
go
Select distinct a,b,c,d,Col1=dbo.F_Str(A) from Tb
go
----------------结果----------------------------
/* a b c d C