в моей базе данных у меня есть XML -колонна, которая выглядит следующим образом:
<Root>
<Row>
<Einheit>Stck</Einheit>
<Faktor>1</Faktor>
<VkPreisEinheit>1</VkPreisEinheit>
<VkMengenEinheit>1</VkMengenEinheit>
<EkMengenEinheit>1</EkMengenEinheit>
<StcklEinheit>1</StcklEinheit>
<StcklDefinition>1</StcklDefinition>
<KonsumentenEinheit>1</KonsumentenEinheit>
</Row>
<Row>
<Einheit>Stück</Einheit>
<Faktor>100</Faktor>
<EinheitFaktor>Stck</EinheitFaktor>
<EkPreisEinheit>1</EkPreisEinheit>
</Row>
</Root>
Чего я хочу добиться - это получить значение из 'Фактора' только из строки, в которой 'EkPreisEinheit' 'is 1
Я пробовал что-то с:
CASE WHEN isnull(convert(xml,xmlcolumn).value('(/Root/Row/EkPreisEinheit)[1]','nvarchar(max)'),'') = '1'
THEN isnull(convert(xml,xmlcolumn).value('(/Root/Row/Faktor)[1]','nvarchar(max)'),'')
WHEN isnull(convert(xml,xmlcolumn).value('(/Root/Row/EkPreisEinheit)[2]','nvarchar(max)'),'') = '1'
THEN isnull(convert(xml,xmlcolumn).value('(/Root/Row/Faktor)[2]','nvarchar(max)'),'')
ELSE ''
END AS Faktor
, что сработало бы, если EKPreiseinheit будет найден в обоих столбцах, но только в одном. Также может случиться так, что он будет в первом ряду или в третьем, если он там был. Есть ли способ справиться с этим?