我想在SQL Server中創建一個表值函數,我想用逗號分隔值返回數據。多行到一個逗號分隔值
例如表:tbl
ID | Value
---+-------
1 | 100
1 | 200
1 | 300
1 | 400
現在,當我使用函數執行查詢Func1(value)
SELECT Func1(Value)
FROM tbl
WHERE ID = 1
輸出,我希望是:100,200,300,400
我想在SQL Server中創建一個表值函數,我想用逗號分隔值返回數據。多行到一個逗號分隔值
例如表:tbl
ID | Value
---+-------
1 | 100
1 | 200
1 | 300
1 | 400
現在,當我使用函數執行查詢Func1(value)
SELECT Func1(Value)
FROM tbl
WHERE ID = 1
輸出,我希望是:100,200,300,400
測試數據
DECLARE @Table1 TABLE(ID INT, Value INT)
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)
查詢
SELECT ID
,STUFF((SELECT ', ' + CAST(Value AS VARCHAR(10)) [text()]
FROM @Table1
WHERE ID = t.ID
FOR XML PATH(''), TYPE)
.value('.','NVARCHAR(MAX)'),1,2,' ') List_Output
FROM @Table1 t
GROUP BY ID
結果集
╔════╦═════════════════════╗
║ ID ║ List_Output ║
╠════╬═════════════════════╣
║ 1 ║ 100, 200, 300, 400 ║
╚════╩═════════════════════╝
如何使用換行符而不是','來分隔值? – SqlLearner
我認爲使用「COALESCE」功能會更好。 –
@ A.R。你實際上的意思是說:微軟的(非)實施這個和人們的結果解決方法是非常可怕的。不要只怪一個實際上並不存在的無定形「全部SQL」。 –
而你的問題是什麼? – steoleary
爲什麼所有行的ID爲1?通常,ID是主鍵,通常對每一行都是唯一的。 –
SELECT Func1(Value)FROM tbl WHERE ID = 1 輸出:100,200,300,400 –