Мы генерируем XML из нашего MS SQL Server, и мы хотим опустить 0 значений для одного сгенерированного тега, который не будет сгенерирован в отчете XML.
Где условие не помогает, как тогда завершить тегструктура опущена, а не только одно значение.
SELECT
CONVERT(VARCHAR(255), [BONUS_AMOUNT]) AS [06_BONUS_AMOUNT] ,
CONVERT(VARCHAR(255), [MAXIMUM_AMOUNT]) AS [07_MAXIMUM_AMOUNT]
FROM #xmldatarider rid
Как сгенерировать тег XML для определенного столбца, только если значение не равно нулю, пожалуйста?
так скажем, этострока будет опущена:
<tns:attributeCurrency xmlns:tns="BigDataFeed" idx="4" col="4" name="BONUS_AMOUNT" value="0" currency="EUR" />
Но она будет сохранена, если есть другое значение, отличное от 0.
Действительно упрощенная версия: у меня есть таблица, из которой я создаю файл XML: code: SELECT PolicyKey, PremiumDebtAmount, DebtKey FROM [DWH].[tgt].[Debt] where PolicyKey IN (4,5) for xml PATH('Debt'), elements go
Результат - 2 родительских тега XML, оба с 3 значениями:
<Debt> <PolicyKey>4</PolicyKey> <PremiumDebtAmount>7.47</PremiumDebtAmount> <DebtKey>241547</DebtKey> </Debt> <Debt> <PolicyKey>5</PolicyKey> <PremiumDebtAmount>5.28</PremiumDebtAmount> <DebtKey>241548</DebtKey> </Debt>
Я не хочу показывать тег PremiumDebtAmount, когда онs 5.28.<br>
I can
t использовать условие where, потому что все теги из parent затем опускаются.
Код:
SELECT PolicyKey, PremiumDebtAmount, DebtKey
FROM [DWH].[tgt].[Debt]
where PolicyKey IN (4,5) and PremiumDebtAmount<>5.28
for xml PATH('Debt'), elements
Результат:
<Debt>
<PolicyKey>4</PolicyKey>
<PremiumDebtAmount>7.47</PremiumDebtAmount>
<DebtKey>241547</DebtKey>
</Debt>
Что мне нужно увидеть:
<Debt>
<PolicyKey>4</PolicyKey>
<PremiumDebtAmount>7.47</PremiumDebtAmount>
<DebtKey>241547</DebtKey>
</Debt>
<Debt>
<PolicyKey>5</PolicyKey>
<DebtKey>241548</DebtKey>
</Debt>
И мой вопрос, как:)
Спасибо