我正在加入一堆表,然后将这些数据插入表变量中。然后我从表中选择那些记录。数据如下所示:
从示例中可以看出,唯一数据仅在第7列和第8列中。在此示例中,只有两行。但它可以是一个无限的数字。因此,我不想将一堆行发送到客户端然后整理数据,而是希望在SQL中执行此操作,只返回一行行。
由于所有数据都是相同的,除了两列,我想连接数据并用逗号分隔它们。这将使客户端操作更加容易。
所以最后,我将有一行,Col7和Col8将如下所示:
有关如何完成此任务的任何想法?
答案 0 :(得分:1)
您可以尝试使用FOR XML:
SELECT STUFF((SELECT',' + Col7 FROM #test
FOR XML PATH('')), 1, 1, '' ) as col7
答案 1 :(得分:1)
假设您要将整个表格折叠为一行,并放弃ID
等列中的数据:
DECLARE @x TABLE(Col7 VARCHAR(255), Col8 VARCHAR(255));
INSERT @x SELECT 'foo','bar'
UNION ALL SELECT 'blat','splunge';
SELECT
Col7 = STUFF((SELECT ',' + Col7 FROM @x FOR XML PATH('')), 1, 1, ''),
Col8 = STUFF((SELECT ',' + Col8 FROM @x FOR XML PATH('')), 1, 1, '');
结果:
Col7 Col8
-------- -----------
foo,blat bar,splunge
如果您需要保留ID列值,则需要提供更好的规格。