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

Penggabungan baris dengan FOR XML, tetapi dengan banyak kolom?

Anda bisa melakukan sesuatu seperti ini. Alih-alih segera mengirimkan nilai XML ke string, kueri ini menggunakan kata kunci TYPE untuk mengembalikan objek tipe xml yang kemudian dapat ditanyakan. Tiga fungsi kueri mencari objek xml untuk semua instance elemen Somefield dan mengembalikan objek xml baru yang hanya berisi nilai tersebut. Kemudian fungsi nilai menghapus tag xml yang mengelilingi nilai dan meneruskannya ke 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. SQL - amankan BIGINT ke INT

  2. Mengekspor data Di SQL Server sebagai INSERT INTO

  3. Bagaimana cara memisahkan tanggal dari string?

  4. Bagaimana cara menggunakan penghapusan kaskade dengan SQL Server?

  5. Cara menggabungkan nilai dengan id yang sama di sql