у меня две таблицы
price -------- id value key sku1 r1 12 sku1 r2 13 sku2 r1 12 sku3 r1 14 specialprice ----- id value key startdate enddate sku2 r2 13 20-Mar 20-May sku3 r1 15 20-Mar 20-May
Я пытаюсь использовать функцию LISTAGG и вывести вывод, например:
output ------ skuid value sku1 r1:12,r2:13 sku2 r2:13 sku3 r1:15
Если в таблице specialprice есть запись, а sysdate находится между датой начала и датой окончания, тогда мне нужно учитывать, что в противном случае мне нужно получить значение из таблицы цен. В таблице цен идентификатор может иметь две записи, которые мне нужны для LISTAGG этих двух записей. таблица specialprice может не иметь записи для идентификатора в таблице цен. Поэтому я использую FULL OUTER JOIN
Запрос PFB, который я построил:
SELECT
a.id,
listagg (a.value | | ':' | | nvl (a.key, ' '), ',') WITHIN GROUP (ORDER BY a.value) AS price
FROM price a
FULL OUTER JOIN specialprice b
ON(b.id = a.id)
WHERE sysdate between b.startdate and b.enddate
GROUP BY a.id
но проблема в том, что я не могу получить значение таблицы specialprice и ключ. Пожалуйста помоги.