sql >> Database teknologi >  >> RDS >> Sqlserver

Rækkesammenkædning med FOR XML, men med flere kolonner?

Du kunne gøre sådan noget. I stedet for straks at sende XML-værdien til en streng, bruger denne forespørgsel nøgleordet TYPE til at returnere et objekt af typen xml, som derefter kan forespørges. De tre forespørgselsfunktioner søger i xml-objektet efter alle forekomster af Somefield-elementet og returnerer et nyt xml-objekt, der kun indeholder disse værdier. Derefter fjerner værdifunktionen de xml-tags, der omgiver værdierne og sender dem til en 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. Nodejs MySQL-forbindelsesforespørgsel returnerer værdi til funktionskald

  2. 6 måder at vælge dublerede rækker i Oracle

  3. Installation af specifikke pakkeversioner med pip

  4. Sådan filtreres rækker med null-værdier i Select Statement i SQL Server - SQL Server / TSQL Tutorial Del 110