Si je comprends ce que vous dites, alors si Col1
contient la chaîne "SUP", vous voulez cette balise dans votre XML final :
<ss:Data ss:Type="String">SomethingContainingSup</ss:Data>
Sinon, vous voulez cette expression :
<Data ss:Type="String">SomethingElse</Data>
Je pense que vous pouvez obtenir cela avec ce fragment 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],
''
Pourquoi le vôtre n'a pas fonctionné :vous ne pouvez pas rendre conditionnel le nom d'une colonne (ou d'un élément XML). Le plus proche que vous puissiez obtenir est de faire en sorte que l'une ou l'autre expression soit évaluée à null, auquel cas elle ne sera pas rendue dans le XML final.