![](/img/trans.png)
[英]In mysql combine multiple rows in one column? when having same ID with different value
[英]Combine Multiple Rows with same ID into one column
在SQL Server中,我有一個查詢來拉取類似的值:
SELECT ID, NAME, TITLE
FROM TABLE_X
要獲得如下結果:
ID NAME TITLE
----------------
01 Bob Cat
02 Bob Bat
03 Tom Mat
我想運行查詢以獲取以下結果:
NAME COUNT TITLE
-----------------------
Bob 2 Cat, Bat
Tom 1 Mat
我所擁有的是這樣的:
SELECT NAME, COUNT(ID), STUFF(TITLE)
FROM TABLE_X
STUFF語法將如下面的代碼所示,以獲取所需的結果-
SELECT B.NAME, COUNT(*) [COUNT],
STUFF((
SELECT ',' + A.TITLE
FROM TABLE_X A
WHERE A.NAME = B.NAME
FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'), 1, 1, '') TITLE
FROM TABLE_X B
GROUP BY B.NAME
輸出是-
NAME COUNT TITLE
Bob 2 Cat,Bat
Tom 1 Mat
您可以按NAME
分組並使用STRING_AGG
聚合函數(從SQL Server 2017開始)
SELECT NAME, COUNT(*) AS [COUNT], STRING_AGG(TABLE_X.TITLE, ', ') AS TITLE
FROM TABLE_X
GROUP BY NAME
ORDER BY NAME
請注意,只有GROUP BY子句中列出的列可以按原樣顯示在SELECT列表中。 您必須將聚合函數應用於所有其他函數。 我逃脫了列別名COUNT
,因為這是一個保留字。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.