我的记录如下所示:
我想将所有多个行和列组合成单行:
109,0,0 | 123,1,1 | 174,0,0 | 321,0,0 ........
每一行组合将用管道分开,最后一行没有管道分隔符。
目前我正在使用MSSQL 2012.任何帮助都非常感谢。
答案 0 :(得分:3)
这是一个使用xml的方法:
DECLARE @t TABLE
(
idno INT ,
idfound INT,
pofound int
)
INSERT INTO @t VALUES
(109, 0, 0),
(123, 1, 1),
(174, 0, 0),
(321, 0, 0),
(456, 0, 1),
(509, 0, 0),
(654, 0, 1),
(687, 0, 1),
(789, 0, 0),
(987, 0, 0)
;WITH cte AS(SELECT CAST(idno AS VARCHAR(max)) + ',' +
CAST(idfound AS VARCHAR(max)) + ',' +
CAST(pofound AS VARCHAR(max)) AS col FROM @t)
SELECT STUFF((SELECT '|' + col FROM cte
FOR XML PATH('')), 1, 1, '')
输出:
109,0,0|123,1,1|174,0,0|321,0,0|456,0,1|509,0,0|654,0,1|687,0,1|789,0,0|987,0,0
答案 1 :(得分:0)
DECLARE @Result VARCHAR(MAX) --To store the result
SELECT
@Result = CONCAT(@Result+'|',CONCAT(idno,',',idfound,',',pofound))
FROM YourTable
SELECT @Result
在这里,我使用代码中的@Result+'|'
来避免在第一行数据之前添加管道
109,0,0|123,1,1|174,0,0|321,0,0|456,0,1|509,0,0|654,0,1|687,0,1|789,0,0|987,0,0
CONCAT
将NULL
值视为空字符串,其中' +
'运营商不会,因为我在查询中使用了两者