日期:2014-05-18  浏览次数:20537 次

记录查询的问题。
ID   Values                       ID     Values
1       A                               1       A,B,F          
1       B                               2       C,D  
2       C                               3       E  
2       D                                
3       E                                 Table   2
1       F

Table   1

如上所示,如何将表1   的记录使用SQL语句转换成表2   所示的格式(最好不要使用While进行控制,其它任何方法均可)。
谢谢各位。

------解决方案--------------------
使用用户定义函数,配合SELECT处理完成字符串合并处理的示例
--处理的数据
CREATE TABLE tb(col1 varchar(10),col2 int)
INSERT tb SELECT 'a ',1
UNION ALL SELECT 'a ',2
UNION ALL SELECT 'b ',1
UNION ALL SELECT 'b ',2
UNION ALL SELECT 'b ',3
GO

--合并处理函数
CREATE FUNCTION dbo.f_str(@col1 varchar(10))
RETURNS varchar(100)
AS
BEGIN
DECLARE @re varchar(100)
SET @re= ' '
SELECT @re=@re+ ', '+CAST(col2 as varchar)
FROM tb
WHERE col1=@col1
RETURN(STUFF(@re,1,1, ' '))
END
GO

--调用函数
SELECT col1,col2=dbo.f_str(col1) FROM tb GROUP BY col1
--删除测试
DROP TABLE tb
DROP FUNCTION f_str
/*--结果
col1 col2
---------- -----------
a 1,2
b 1,2,3
--*/
GO