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

Nối hàng với FOR XML, nhưng với nhiều cột?

Bạn có thể làm một cái gì đó như thế này. Thay vì ngay lập tức gửi giá trị XML đến một chuỗi, truy vấn này sử dụng từ khóa TYPE để trả về một đối tượng kiểu xml mà sau đó có thể được truy vấn. Ba hàm truy vấn tìm kiếm đối tượng xml cho tất cả các phiên bản của phần tử Somefield và trả về một đối tượng xml mới chỉ chứa các giá trị đó. Sau đó, hàm giá trị loại bỏ các thẻ xml xung quanh các giá trị và chuyển chúng vào một varchar (max)

SELECT  ThisTable.ID
       ,[A].query('/Somefield').value('/', 'varchar(max)') AS [SomeField_Combined]
       ,[A].query('/Somefield2').value('/', 'varchar(max)') AS [SomeField2_Combined]
       ,[A].query('/Somefield3').value('/', 'varchar(max)') AS [SomeField3_Combined]
FROM    ThisTable
        OUTER APPLY (
                     SELECT (
                             SELECT SomeField + ' ' AS [SomeField]
                                   ,SomeField2 + ' ' AS [SomeField2]
                                   ,SomeField3 + ' ' AS [SomeField3]
                             FROM   SomeTable
                             WHERE  SomeTable.ID = ThisTable.ID
                            FOR
                             XML PATH('')
                                ,TYPE
                            ) AS [A]
                    ) [A]


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Diễn đàn về hiệu suất máy chủ SQL tốt nhất để được trợ giúp về các câu hỏi hóc búa nhất

  2. Thoát dấu ngoặc kép trong SQL 2005/2008

  3. Sắp xếp tự nhiên với SQL Server

  4. Câu lệnh trống trong T-SQL

  5. Gặp lỗi khi thực thi sql động trong một hàm (SQL Server)?