我昨天发的一个求助中,详细情况为:
http://topic.csdn.net/u/20100427/00/d635abeb-fb4a-43fd-9f8e-3351b5bfd0d5.html但是因为我的原表比这个要大得多,也就是name列多了很多数据,所以当我看到朋友们写的代码,我有一个疑问:在这位朋友提供的SQL 代码中,写了以下几句SELECT 764,'n','KIA','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','FLJ','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','WNT','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','ARX','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','PIT','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','CAV','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','NEU','1.24','7.82',10.00 UNION ALL
SELECT 815,'c','COL','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','PCD','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','PC9','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','BTB','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','CD3','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','SPA','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','FAT','0.02','0.08',2.362
要是我的name列很长,比我这个提供的表的name列的数据长多了,未必也要在写SQL 这截代码中一样,都加进去么?以上的这个代码段,可是我的一个表的数据啊,要是把更大的表进行操作,那是很繁琐的工作,请问有没有动态的解决办法???谢过!!
http://topic.csdn.net/u/20100427/00/d635abeb-fb4a-43fd-9f8e-3351b5bfd0d5.html但是因为我的原表比这个要大得多,也就是name列多了很多数据,所以当我看到朋友们写的代码,我有一个疑问:在这位朋友提供的SQL 代码中,写了以下几句SELECT 764,'n','KIA','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','FLJ','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','WNT','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','ARX','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','PIT','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','CAV','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','NEU','1.24','7.82',10.00 UNION ALL
SELECT 815,'c','COL','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','PCD','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','PC9','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','BTB','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','CD3','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','SPA','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','FAT','0.02','0.08',2.362
要是我的name列很长,比我这个提供的表的name列的数据长多了,未必也要在写SQL 这截代码中一样,都加进去么?以上的这个代码段,可是我的一个表的数据啊,要是把更大的表进行操作,那是很繁琐的工作,请问有没有动态的解决办法???谢过!!
DROP TABLE [tb]
GO
CREATE TABLE [tb]([id] INT,[name] NVARCHAR(10),[symbol] NVARCHAR(10),[value] NVARCHAR(10),[Found] NVARCHAR(10),[rich] DECIMAL(18,3))
INSERT [tb]
SELECT 764,'n','KIA','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','FLJ','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','WNT','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','ARX','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','PIT','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','CAV','1.24','7.82',10.00 UNION ALL
SELECT 764,'n','NEU','1.24','7.82',10.00 UNION ALL
SELECT 815,'c','COL','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','PCD','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','PC9','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','BTB','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','CD3','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','SPA','0.02','0.08',2.362 UNION ALL
SELECT 815,'c','FAT','0.02','0.08',2.362
GO
--SELECT * FROM [tb]-->SQL查询如下:
if object_id('fn_test') is not null
drop function fn_test
go
create function fn_test(@name nvarchar(3000))
returns nvarchar(3000)
begin
declare @s nvarchar(3000)
select @s=isnull(@s+',','')+symbol from tb where name=@name
return @s
end
goselect distinct id,name,dbo.fn_test(name) symbol,value,Found,rich from tb这个够长吧
if object_id('fn_test') is not null
drop function fn_test
go
create function fn_test(@name nvarchar(10))
returns nvarchar(30)
begin
declare @s nvarchar(30)
select @s=isnull(@s+',','')+symbol from tb where name=@name
return @s
end
goselect distinct id,name,dbo.fn_test(name) symbol,value,Found,rich from tb-->SQL2005查询如下:
select distinct id,name,
stuff((select ','+[symbol] from tb where name=t.name for xml path('')),1,1,'') symbol,
value,Found,rich
from tb t