2017-12-14 23 views
-3

이것은 내 쿼리입니다. 나는 다른 날짜에 가격 사이의 차이를 보여주고 싶다.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을 : 단일 행 부질의가

가 어떻게 그 오류를 방지 할 수 있습니다 하나의 행보다 더 반환?

+2

, 링크가 길을 잃을 수 있습니다 고려 향후 사용자를위한 쓸모없는이 질문을하시기 바랍니다. 그 때문에 많은 독자는 실제로 여기에 게시 한 내용에 대한 주제를 벗어난 질문을 고려할 것입니다. 어느 것도 거의 없습니다. – Yunnosch

+0

는 ID, 제품, 가격, P_DATE, 을 선택'에 쿼리를 변경하십시오 (최대 (t2.price SELECT - t1.price)를 AS nav_return pivot_table T2 FROM WHERE t1.p_date = '11 -DEC- 17 'AND t2.p_date = '12 -DEC-17'AND t1.id = t2.id) as nav_retun from PIVOT_TABLE t1' 결과를 얻고 싶습니다 – Rams

+0

테이블 구조를 복사 할 수 있습니까? –

답변

0

이 기능이 작동합니까?

설정 :

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