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

Làm thế nào để sử dụng GROUP BY để nối các chuỗi trong SQL Server?

Không cần vòng lặp CURSOR, WHILE hoặc Chức năng do người dùng xác định .

Chỉ cần sáng tạo với FOR XML và PATH.

[Lưu ý:Giải pháp này chỉ hoạt động trên SQL 2005 trở lên. Câu hỏi ban đầu không chỉ định phiên bản được sử dụng.]

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. Tôi có thể bật ignore_dup_key cho khóa chính không?

  2. Thống kê IO Tệp Hiệu suất Máy chủ SQL

  3. Chèn kết quả của một thủ tục được lưu trữ vào một bảng tạm thời

  4. Làm thế nào để có được ngày cuối cùng của tuần trước bằng sql?

  5. JSON_QUERY () so với JSON_VALUE () trong SQL Server:Sự khác biệt là gì?