oracle查询:多行子查询返回多个行
1.子查询
查询嵌套,一个查询作为另一个查询的条件、表。
多行子查询通常作为另一个查询的表使用;单行子查询可以作为另一个查询的条件使用。
SELECT
decode(
( SELECT nvl( a.idenno, '11' ) FROM com_patientinfo a WHERE a.card_no = c.card_no ),
'11',
( SELECT t.id || '_' FROM SJPT_HOSPITAL t ) || c.card_no,
( SELECT a.idenno FROM com_patientinfo a WHERE a.card_no = c.card_no )
) IDCARD,
(
SELECT
CASE
WHEN
length( g.idenno ) = 18 THEN
'01' ELSE '99'
END
FROM
fin_opr_register g
WHERE
g.clinic_code = c.clinic_code
AND g.trans_type = '1'
AND ROWNUM = 1
) CARDTYPE,
(
SELECT
CASE
WHEN
length( g.idenno ) = 18 THEN
g.idenno ELSE ( SELECT t.id || '_' FROM SJPT_HOSPITAL t ) || g.card_no
END
FROM
fin_opr_register g
WHERE
g.clinic_code = c.clinic_code
AND g.trans_type = '1'
AND ROWNUM = 1
) CARDNO
FROM
fin_opb_feedetail c
WHERE
c.clinic_code IS NOT NULL
AND c.days > 1
所以单行子查询返回多个行就很好理解了,作为另一个查询的条件的子查询返回多个值。