读书人

SQL 语句, SQL2000 的

发布时间: 2013-02-25 10:23:36 作者: rapoo

求一个 SQL 语句, SQL2000 的
有一张表,一共6个字段,[编号1][编号2][编号3][名称],4列不会有重复的

[编号1] [编号2] [编号3] [名称] [数量] [重量]
0001 0002 0003 苹果 1 5公斤
0001 0002 0003 橘子 2 6公斤
0001 0002 0004 香蕉 3 10公斤
0001 0002 0004 猕猴桃 3 11公斤


我想实现,按照[编号1][编号2][编号3]进行分组,合并[名称][数量][重量],得到结果:


[编号1] [编号2] [编号3] [合并列]
0001 0002 0003 苹果/1/5公斤,橘子/2/6公斤
0001 0002 0004 香蕉/3/10公斤,猕猴桃/3/11公斤
[解决办法]

CREATE TABLE Test1([编号1] CHAR(4),   [编号2] CHAR(4),   [编号3] CHAR(4),    [名称] varchar(20),  [数量] int,  [重量] varchar(20))
INSERT test1 SELECT '0001' ,'0002' ,'0003' ,'苹果', 1 ,'5公斤'
UNION ALL SELECT '0001' ,'0002' ,'0003' ,'橘子', 2 ,'6公斤'
UNION ALL SELECT '0001' ,'0002' ,'0004' ,'香蕉', 3 ,'10公斤'
UNION ALL SELECT '0001' ,'0002' ,'0004' ,'猕猴桃', 3 ,'11公斤'

GO

CREATE FUNCTION fun_Test1(@b1 CHAR(4),@b2 CHAR(4),@b3 CHAR(4))
RETURNS VARCHAR(200)
AS
BEGIN
DECLARE @sqlT VARCHAR(200)
SELECT @sqlT=ISNULL(@sqlT+',','')+[名称]+'/'+ltrim(数量)+'/'+重量
FROM test1
WHERE 编号1=@b1 and 编号2=@b2 and 编号3= @b3
ORDER BY 编号1

RETURN @sqlT
END
GO
SELECT 编号1,编号2,编号3, dbo.fun_test1(编号1,编号2,编号3) 合并列 FROM test1 group by 编号1,编号2,编号3

--result
/*
编号1 编号2 编号3 合并列
---- ---- ---- ------------------------------------


0001 0002 0003 苹果/1/5公斤,橘子/2/6公斤
0001 0002 0004 香蕉/3/10公斤,猕猴桃/3/11公斤

(所影响的行数为 2 行)
*/

读书人网 >SQL Server

热点推荐