Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana cara menggunakan GROUP BY untuk menggabungkan string di SQL Server?

Tidak diperlukan KURSOR, WHILE loop, atau Fungsi Buatan Pengguna .

Hanya perlu berkreasi dengan FOR XML dan PATH.

[Catatan:Solusi ini hanya berfungsi pada SQL 2005 dan yang lebih baru. Pertanyaan awal tidak menentukan versi yang digunakan.]

CREATE TABLE #YourTable ([ID] INT, [Name] CHAR(1), [Value] INT)

INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'A',4)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (1,'B',8)
INSERT INTO #YourTable ([ID],[Name],[Value]) VALUES (2,'C',9)

SELECT 
  [ID],
  STUFF((
    SELECT ', ' + [Name] + ':' + CAST([Value] AS VARCHAR(MAX)) 
    FROM #YourTable 
    WHERE (ID = Results.ID) 
    FOR XML PATH(''),TYPE).value('(./text())[1]','VARCHAR(MAX)')
  ,1,2,'') AS NameValues
FROM #YourTable Results
GROUP BY ID

DROP TABLE #YourTable


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa Batasan Unik di SQL Server - Tutorial SQL Server / TSQL Bagian 95

  2. SQL Server SHOWPLAN_TEXT

  3. Temukan Asosiasi Antara Akun Email Database dan Prinsipal Database di SQL Server (T-SQL)

  4. Nilai pencocokan klausa SQL WHERE dengan spasi tambahan

  5. T-SQL - Aliasing menggunakan =versus as