나는 다음과 같은 오류 얻고있다 "단일 행 서브 쿼리가 하나 개 이상의 행 반환"다음과 같은 오류 ORA-01427 얻기 : 단일 행 부질의 반환 둘 이상의 행 00000 01427. -
내가 싶어를 첫 번째 쿼리의 열 값 및 그 값을 다음 쿼리로 전달합니다.
ORA-01427 : 단일 행 부질의는 하나 이상의 행 01427. 00000을 반환 - 다음 쿼리와
"단일 행 부질의는 하나 개 이상의 행을 반환"
with
deal_XX AS(
SELECT distinct idh.vendor supplier
,idh.deal_id
,mff_report.mff_merch_sql.get_sup_name(idh.vendor) sup_name
FROM im_doc_head idh
,mff_report.stage_complex_deal_head_hist scdhh
,im_complex_deal_detail icdd
,mff_report.v_loc vl
,item_master im
,item_master im_parent
WHERE ( ( idh.type IN ('DEBMEC','CRDMEC') --Debit and Credit Memos in APPROVED or POSTED
AND idh.status IN ('APPRVE','POSTED'))
OR ( idh.type = 'CRDNRC' --Credit Note Requests in APPROVED or MATCHED
AND idh.status IN ('APPRVE','MTCH')))
AND idh.deal_type = 'C'
AND NVL(:PM_supplier,idh.vendor) = idh.vendor
AND idh.deal_id = scdhh.deal_id (+)
AND SUBSTR(idh.ext_doc_id,(INSTR(idh.ext_doc_id,'-',1) + 1),INSTR(idh.ext_doc_id,'-',1,2) - (INSTR(idh.ext_doc_id,'-',1) + 1)) = scdhh.deal_detail_id (+)
AND idh.doc_date = scdhh.end_invoice_date (+)
AND idh.doc_id = icdd.doc_id
AND icdd.location = vl.loc
AND icdd.item = im.item
AND im.item_parent = im_parent.item (+)
AND ( :PM_supplier IS NOT NULL
OR :PM_doc_date_from IS NOT NULL
OR :PM_doc_date_to IS NOT NULL
OR :PM_approval_date_from IS NOT NULL
OR :PM_approval_date_to IS NOT NULL
OR :PM_ext_doc_id IS NOT NULL
OR :PM_batch_mode = 'Y')
)
select distinct ship.order_no , (select deal_id from deal_XX) hhhh
from ordloc_discount od
,shipment ship
,mff_report.stage_complex_deal_head_hist scdhh
where od.deal_ID = (select deal_id from deal_XX)
and od.deal_id = scdhh.deal_id
and ship.status_code = 'R'
and od.order_no = ship.order_no
and ship.receive_date BETWEEN
to_date(scdhh.start_invoice_date , 'YYYY-MM-DD" "HH24:MI:SS')
AND
to_date(scdhh.end_invoice_date , 'YYYY-MM-DD" "HH24:MI:SS') ;
글쎄,'deal_XX에서 deal_id를 선택합니까? 하위 쿼리를 사용하는 대신 해당 CTE에 가입 하시겠습니까? –
약 180 한 거래에 대한 주문 번호는 내가 예상하는 것입니다. –