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
Другие вопросы по тегам