sql >> Database >  >> RDS >> Sqlserver

Rijaaneenschakeling met FOR XML, maar met meerdere kolommen?

Je zou zoiets kunnen doen. In plaats van de XML-waarde onmiddellijk naar een tekenreeks te sturen, gebruikt deze query het sleutelwoord TYPE om een ​​object van het type xml te retourneren dat vervolgens kan worden opgevraagd. De drie queryfuncties zoeken in het xml-object naar alle instanties van het Somefield-element en retourneren een nieuw xml-object dat alleen die waarden bevat. Dan verwijdert de waardefunctie de xml-tags die de waarden omringen en geeft ze door aan een 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. SQLAlchemy met standaard dataklasse die de postgres-database niet vult

  2. Hoe een door komma's gescheiden tekenreeks in SQL optellen?

  3. Bijbehorende items tellen met Sequelize

  4. Schrijf GeoDataFrame in SQL Database