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

Impossibile aggiungere la condizione nella parte FOR XML

Se ho capito quello che stai dicendo, allora se Col1 contiene la stringa "SUP", vuoi questo tag nel tuo XML finale:

<ss:Data ss:Type="String">SomethingContainingSup</ss:Data>

Altrimenti, vuoi questa espressione:

<Data ss:Type="String">SomethingElse</Data>

Penso che tu possa ottenerlo con questo frammento SQL:

SELECT CASE WHEN COL1 LIKE '%SUP%' THEN 'String' END  as [Cell/ss:Data/@ss:Type],
       CASE WHEN Col1 Like '%SUP%' THEN Col1 END as [Cell/ss:Data], 
       CASE WHEN COL1 NOT LIKE '%SUP%' THEN 'String' END  as [Cell/Data/@ss:Type],                    
       CASE WHEN Col1 NOT Like '%SUP%' THEN Col1  END as [Cell/Data],
       ''

Perché il tuo non ha funzionato:non puoi condizionare il nome di una colonna (o di un elemento XML). Il più vicino che puoi ottenere è fare in modo che l'una o l'altra espressione valuti come null, nel qual caso non verrà renderizzata nell'XML finale.