Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhiều hàng cho một giá trị được phân tách bằng dấu phẩy trong Sql Server

Dữ liệu thử nghiệm

DECLARE @Table1 TABLE(ID INT, Value INT)
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400)

Truy vấn

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

Tập hợp kết quả

╔════╦═════════════════════╗
║ ID ║     List_Output     ║
╠════╬═════════════════════╣
║  1 ║  100, 200, 300, 400 ║
╚════╩═════════════════════╝

SQL Server 2017 và các phiên bản mới hơn

Nếu bạn đang làm việc trên SQL Server 2017 hoặc các phiên bản mới hơn, bạn có thể sử dụng Hàm máy chủ SQL tích hợp sẵn STRING_AGG để tạo danh sách được phân tách bằng dấu phẩy:

DECLARE @Table1 TABLE(ID INT, Value INT);
INSERT INTO @Table1 VALUES (1,100),(1,200),(1,300),(1,400);


SELECT ID , STRING_AGG([Value], ', ') AS List_Output
FROM @Table1
GROUP BY ID;

Tập hợp kết quả

╔════╦═════════════════════╗
║ ID ║     List_Output     ║
╠════╬═════════════════════╣
║  1 ║  100, 200, 300, 400 ║
╚════╩═════════════════════╝



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. băm một hàng SQL?

  2. Cách tạo Phím tắt Tùy chỉnh trong SQL Server Management Studio (SSMS) - Hướng dẫn SQL Server / TSQL Phần 10

  3. 4 Mẹo để Chạy Chẩn đoán Máy chủ SQL

  4. nhận dạng từ chèn sql qua jdbctemplate

  5. Xem liệu một Bảng có Ràng buộc DEFAULT trong SQL Server hay không bằng cách sử dụng OBJECTPROPERTY ()