Si entiendo lo que dices, entonces si Col1
contiene la cadena "SUP", quiere esta etiqueta en su XML final:
<ss:Data ss:Type="String">SomethingContainingSup</ss:Data>
De lo contrario, desea esta expresión:
<Data ss:Type="String">SomethingElse</Data>
Creo que puedes obtener eso con este fragmento de 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],
''
Por qué el tuyo no funcionó:no puedes hacer que el nombre de una columna (o de un elemento XML) sea condicional. Lo más cercano que puede obtener es hacer que una u otra expresión se evalúe como nula, en cuyo caso no se representará en el XML final.