Sql和oracle apex,“单行子查询返回多行”-错误

Sql和oracle apex,“单行子查询返回多行”-错误,sql,oracle,oracle11g,oracle-apex-5.1,Sql,Oracle,Oracle11g,Oracle Apex 5.1,这是我的问题。我想展示不同日期的价格差异 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

这是我的问题。我想展示不同日期的价格差异

 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:单行子查询返回多行


我怎样才能避免这个错误呢?

像这样的东西对你有用吗

设置:

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

请考虑到链接可能会丢失,这使得这个问题对未来的用户毫无用处。正因为如此,许多读者会考虑问题的主题,你实际上在这里张贴的内容。基本上什么都没有。请更改查询以选择id、产品、价格、采购日期、,选择maxt2.price-t1.price作为pivot_表t2中的nav_return,其中t1.p_date='11-DEC-17'和t2.p_date='12-DEC-17'以及t1.id=t2.id作为pivot_表t1中的nav_retun想要获得结果可以复制表结构吗?子查询中的交叉连接保证总是返回太多行,除非这两个表只有一行每排。那是行不通的。可能是重复的