sql >> Databasteknik >  >> RDS >> Sqlserver

Radsammansättning med FOR XML, men med flera kolumner?

Du kan göra något sånt här. Istället för att omedelbart skicka XML-värdet till en sträng använder den här frågan nyckelordet TYPE för att returnera ett objekt av typen xml som sedan kan frågas. De tre frågefunktionerna söker i xml-objektet efter alla instanser av Somefield-elementet och returnerar ett nytt xml-objekt som bara innehåller dessa värden. Sedan tar värdefunktionen bort xml-taggarna som omger värdena och skickar dem till 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. (PLSQL) Vilket är det enklaste uttrycket att testa för ett ändrat värde i en Oracle-utlösare vid uppdatering?

  2. BadImageFormatUndantag från .net oracle-leverantör

  3. Beräknar skillnaden mellan två tidsstämplar i Oracle i millisekunder

  4. Fel 28000:Inloggning misslyckades för användaren DOMAIN\\user med pyodbc