Sql и oracle apex, "однострочный подзапрос возвращает более одной строки"- ошибка
Это мой запрос. Я хочу показать разницу между ценами на разные даты.
select
id,
PRODUCT,
PRICE,
P_DATE,
(SELECT(t2.price - t1.price) AS PRICE_DIFF
FROM PRODUCT_TABLE t1 CROSS JOIN
PRODUCT_TABLE t2
WHERE t1.p_date = '11-DEC-17' AND t2.p_date = '12-DEC-17' AND t1.id=t2.id) as PRICE_DIFF
from PRODUCT_TABLE
Это ошибка, которую я получаю:
ORA-01427: подзапрос из одной строки возвращает более одной строки
Как я могу избежать этой ошибки?
1 ответ
Что-то подобное работает для вас?
Настроить:
with product_table as
(
select 1 as id, 'cheese' as product, 1000 as price, TO_DATE('11-DEC-17', 'DD-MON-YY') as p_date from dual
union all
select 1, 'cheese', 1100, TO_DATE('12-DEC-17', 'DD-MON-YY') from dual
union all
select 2, 'onion', 500, TO_DATE('11-DEC-17', 'DD-MON-YY') from dual
union all
select 2, 'onion', 550, TO_DATE('12-DEC-17', 'DD-MON-YY') from dual
)
Запрос:
select
t1.id,
t1.product,
t1.price,
t1.p_date, -- maybe t2.p_date? not sure which is relevant
t2.price - t1.price as price_diff
from
product_table t1
inner join
product_table t2
on t1.id = t2.id
where
t1.p_date = '11-DEC-17'
and t2.p_date = '12-DEC-17'
Выход:
ID PRODUCT PRICE P_DATE PRICE_DIFF
---------- ------- ---------- --------- ----------
1 cheese 1000 11-DEC-17 100
2 onion 500 11-DEC-17 50