合并列值整理
2009-03-15 23:10
148 查看
数据:
id col
----- ------
1 a
1 b
2 a
2 b
2 c
期望得到结果:
id col
------ -----------
1 a,b
2 a,b,c
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2009-03-15 10:19:22
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
-- Blog : http://blog.csdn.net/htl258 ----------------------------------------------------------------------------------
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([id] [int],[col] [nvarchar](10))
INSERT INTO [tb]
SELECT '1','a' UNION ALL
SELECT '1','b' UNION ALL
SELECT '2','a' UNION ALL
SELECT '2','b' UNION ALL
SELECT '2','c'
--SELECT * FROM [tb]
-->SQL查询如下:
--SQL2000以上版本:
IF OBJECT_ID('dbo.f_str')>0
DROP FUNCTION dbo.f_str
GO
CREATE FUNCTION dbo.f_str
(
@id INT
)
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @r VARCHAR(1000)
SELECT @r = ISNULL(@r+',', '') + col
FROM tb
WHERE id = @id
RETURN @r
END
GO
SELECT DISTINCT id,dbo.f_str(id) col FROM tb
/*
id col
----------- ---------------------
1 a,b
2 a,b,c
(2 行受影响)
*/
-->SQL2005以上版本:
SELECT DISTINCT id,
STUFF(
(
SELECT ','+col
FROM tb t
WHERE id = tb.id FOR XML PATH('')
), 1, 1, ''
) AS col
FROM tb
/*
id col
----------- ---------------------
1 a,b
2 a,b,c
(2 行受影响)
*/
id col
----- ------
1 a
1 b
2 a
2 b
2 c
期望得到结果:
id col
------ -----------
1 a,b
2 a,b,c
----------------------------------------------------------------------------------
-- Author : htl258(Tony)
-- Date : 2009-03-15 10:19:22
-- Version: Microsoft SQL Server 2008 (RTM) - 10.0.1600.22 (Intel X86)
-- Jul 9 2008 14:43:34
-- Copyright (c) 1988-2008 Microsoft Corporation
-- Developer Edition on Windows NT 5.1 <X86> (Build 2600: Service Pack 2)
-- Blog : http://blog.csdn.net/htl258 ----------------------------------------------------------------------------------
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([id] [int],[col] [nvarchar](10))
INSERT INTO [tb]
SELECT '1','a' UNION ALL
SELECT '1','b' UNION ALL
SELECT '2','a' UNION ALL
SELECT '2','b' UNION ALL
SELECT '2','c'
--SELECT * FROM [tb]
-->SQL查询如下:
--SQL2000以上版本:
IF OBJECT_ID('dbo.f_str')>0
DROP FUNCTION dbo.f_str
GO
CREATE FUNCTION dbo.f_str
(
@id INT
)
RETURNS VARCHAR(1000)
AS
BEGIN
DECLARE @r VARCHAR(1000)
SELECT @r = ISNULL(@r+',', '') + col
FROM tb
WHERE id = @id
RETURN @r
END
GO
SELECT DISTINCT id,dbo.f_str(id) col FROM tb
/*
id col
----------- ---------------------
1 a,b
2 a,b,c
(2 行受影响)
*/
-->SQL2005以上版本:
SELECT DISTINCT id,
STUFF(
(
SELECT ','+col
FROM tb t
WHERE id = tb.id FOR XML PATH('')
), 1, 1, ''
) AS col
FROM tb
/*
id col
----------- ---------------------
1 a,b
2 a,b,c
(2 行受影响)
*/
相关文章推荐
- XML拆分合并列值学习整理
- 【交流】SQL 2005溢用之:合并列值
- 【交流】SQL 2005溢用之:合并列值
- 表值函数结合合并列值并带参
- SQL 2000之合并列值
- 演示数据块整理(合并)的效果
- CxImage整理(叠加字符/图像合并)
- SQL合并同一分类的列值
- SQL Server2000和2005中合并列值
- DataTable创建、数据的添加及数据记录的排序,检索,合并,分页,统计(整理)
- SQL 合并列值和拆分列值
- 合并整理最短摘要生成算法
- 精典SQL:分组合并列值
- 【交流】SQL 2005溢用之:合并列值
- 数据结构整理_有序链表合并
- 合并列值(转)
- SQL语句:合并列值记录为一条记录
- 【JqGrid】jqGrid动态合并列值
- 【转】【交流】SQL 2005溢用之:合并列值
- SQL 2005溢用之:合并列值