[英]How to create a query to combine two or three rows for duplicated IDs
我正在嘗試創建一個select語句,以合並任何特定列上重復ID的值。
我的桌子是:
ID Name
---------
01 A
01 B
02 C
03 D
如何選擇獲取值,例如:ID的01 A,B:01。當前,當我使用Tablename中的Select *時,它將兩行列出01 ID。 我只想將其合並為一行,對於任何重復的行,Name應該與逗號結合。
新代碼:
select Name, ID = REPLACE
((select Surname AS [data()]
FROM Mytable
WHERE Name = d. Name
ORDER BY Name FOR XML path('')), ' ', REQUIRED SEPERATOR)
FROM Mytable d
WHERE Name IS NOT NULL
GROUP BY Name
非常感謝你!
MS SQL Server 2014架構設置 :
create table t (id int not null, name nvarchar(max) not null)
insert t (id, name) values
(1, 'A'),
(1, 'B'),
(1, 'C'),
(2, 'A'),
(2, 'D'),
(3, 'A'),
(3, 'F'),
(3, 'E')
查詢1 :
select id, REPLACE
((select name AS [data()]
FROM t as t1
WHERE t1.id = t0.id
ORDER BY Name FOR XML path('')), ' ', ',')
FROM t as t0
GROUP BY id
結果 :
| id | |
|----|-------|
| 1 | A,B,C |
| 2 | A,D |
| 3 | A,E,F |
更新要處理名稱中已經存在的空格,我們可以在分組之前將其替換為下划線,並在之后進行替換:
select id, replace(REPLACE
((select replace(name, ' ', '_') AS [data()]
FROM t as t1
WHERE t1.id = t0.id
ORDER BY Name FOR XML path('')), ' ', ','), '_', ' ')
FROM t as t0
GROUP BY id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.