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