簡體   English   中英

如何創建查詢以合並兩行或三行以獲得重復的ID

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

非常感謝你!

SQL小提琴

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM