Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Łączenie wierszy z FOR XML, ale z wieloma kolumnami?

Możesz zrobić coś takiego. Zamiast natychmiastowego wysyłania wartości XML do ciągu, to zapytanie używa słowa kluczowego TYPE do zwrócenia obiektu typu xml, który można następnie zbadać. Trzy funkcje zapytań przeszukują obiekt xml pod kątem wszystkich wystąpień elementu Somefield i zwracają nowy obiekt xml zawierający tylko te wartości. Następnie funkcja value usuwa znaczniki xml otaczające wartości i przekazuje je do 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. Używanie DBCC CLONEDATABASE do generowania schematu i tylko kopii statystyk bazy danych użytkownika w programie SQL Server 2014 z dodatkiem SP2

  2. Jak wykonać wyszukiwanie pełnotekstowe (FTS) za pomocą platformy encji Linq to ADO.NET?

  3. Linq to SQL DateTime wartości są lokalne (rodzaj =nieokreślony) — jak to zrobić w czasie UTC?

  4. Konwertuj „datetime” na „smalldatetime” w SQL Server (przykłady T-SQL)

  5. konwersja znacznika czasu Epoch na serwer sql (format czytelny dla człowieka)