У меня xml хранится в postgres дБ
<data>
<contract>
<details>
<code>BAC</code>
<type>SU</type>
<amount>879</amount>
</details>
<start_date>15062020</start_date>
</contract>
<contract>
<details>
<code>BAC</code>
<type>SU</type>
<amount>879</amount>
</details>
<start_date>15062019</start_date>
</contract>
</data>
Мне нужно отфильтровать контракты, где код равен BA C, а тип - SU (да, оба контракта равны до этого состояния). Но мне также нужно отфильтровать дату начала, где start_date меньше текущей даты, поэтому первый контракт должен быть отфильтрован. По какой-то причине это не так.
Вот мой код:
select
id,
unnest(
xpath(
'sum(/data/details[code=="BAC" and type="SU"] and start_date >='
|| to_char(current_date, 'DDMMYYYY')
|| ']/amount/text())',
xmlparse(document xml)
)
)::text::numeric as current_contracts
from my_db