[英]How to combine return results of query in one row
我有一个保存人员代码的表。
当我从该表中选择时,我得到3行结果,例如:
2129,3394,3508,3534
2129,3508
4056
我想要在创建选择结果时将其合并成一行,例如:
2129,3394,3508,3534,2129,3508,4056
或不同的值,例如:
2129,3394,3508,3534,4056
理想情况下,您应该避免在表中完全存储CSV数据。 话虽如此,对于您的第一个结果集,我们可以尝试使用STRING_AGG
:
SELECT STRING_AGG(col, ',') AS output
FROM yourTable;
您的第二个要求比较棘手,我们可以尝试通过表格删除重复项:
WITH cte AS (
SELECT DISTINCT VALUE AS col
FROM yourTable t
CROSS APPLY STRING_SPLIT(t.col, ',')
)
SELECT STRING_AGG(col, ',') WITHIN GROUP (ORDER BY CAST(col AS INT)) AS output
FROM cte;
我通过使用STUFF
和FOR XML PATH
解决了这个问题:
SELECT
STUFF((SELECT ',' + US.remain_uncompleted
FROM Table_request US
WHERE exclusive = 0 AND reqact = 1 AND reqend = 0
FOR XML PATH('')), 1, 1, '')
谢谢蒂姆
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.