我有一个非常复杂的查询,返回的信息如下:
我想将所有列分组如下:
有简单的方法吗?
答案 0 :(得分:0)
这将是获得结果的一种方式:
SELECT
t.ID,
STUFF((SELECT distinct ', ' + t.InternalRef
FROM #t t
FOR XML PATH('')), 1, 1, '') [InternalRef],
STUFF((SELECT distinct ', ' + t.ExternalRef
FROM #t t
FOR XML PATH('')), 1, 1, '') [ExternalRef],
STUFF((SELECT distinct ', ' + t.ComposantIdentifier
FROM #t t
FOR XML PATH('')), 1, 1, '') [ComposantIdentifier]
FROM #t t
GROUP BY t.ID
ORDER BY 1
您可以尝试此here的演示。
答案 1 :(得分:0)
您在这里:
WITH cte AS (
SELECT 368519 AS Id, '243625378R' AS InternalRef, '492-90-113' AS ExternalRef, '1749MA' AS ComponentIdentifier
UNION ALL
SELECT 368519 AS Id, '243625378R' AS InternalRef, '492-90-114' AS ExternalRef, '1749MA' AS ComponentIdentifier
UNION ALL
SELECT 368519 AS Id, '(8200945715)' AS InternalRef, '(7807965)' AS ExternalRef, '1749MA' AS ComponentIdentifier)
SELECT
Id,
STUFF((SELECT ',' + InternalRef FROM cte FOR XML PATH ('')), 1, 1, ''),
STUFF((SELECT ',' + ExternalRef FROM cte FOR XML PATH ('')), 1, 1, ''),
ComponentIdentifier
FROM
cte
GROUP BY
Id,
ComponentIdentifier;
假设cte
是公用表表达式,它是您现有查询的输出。因此,您可以将其包装在通用表表达式中(替换我的UNION
语句),将其放入临时表,表变量等中。
我也在做出一些可能错误的假设,但我的输出与您的相符:
Id (No column name) (No column name) ComponentIdentifier
368519 243625378R,243625378R,(8200945715) 492-90-113,492-90-114,(7807965) 1749MA