簡體   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