繁体   English   中英

如何在一行中合并查询的返回结果

[英]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;

演示

我通过使用STUFFFOR 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM