Oracle SQL查询,获取条件中占用的值

wlsrxk51  于 2023-05-28  发布在  Oracle
关注(0)|答案(1)|浏览(138)

我很感激你在这个问题上的帮助:
我有3个表(客户,职业,TRS)
我使用以下连接:

  • JOIN CIF ON TRS.trs_ac_cif = cif.cif_no
  • 加入职业CIF.OCCUPATION =职业.OCCUPATION_CODE

我需要在CIF_NO = TO_TRS_AC_CIF的表职业中选择名为Brief_DESC的列
但是我不希望where条件应用于所有的查询,我试着做一个子查询,但错误显示'singe-row subquery returns more than one value'
谢谢你
我试着做一个子查询,但错误显示“单行子查询返回多个值”

vngu2lb8

vngu2lb81#

虽然我们并不知道足够的精确度,但基本的问题是,如果你使用像下面这样的"correlated subquery",那么子查询必须只返回一个值。一个非常常见的方法是使用MAX(),它将强制子查询只产生一个值,例如:

SELECT
      cif.CIF_NO
    , (
        SELECT max(BRIEF_DESC)
        FROM OCCUPATIONS
        WHERE cif.CIF_NO = TO_TRS_AC_CIF -- the "correlation" is here
        ) AS BRIEF_DESC
FROM TRS
JOIN cif ON TRS.trs_ac_cif = cif.cif_no
JOIN OCCUPATIONS ON CIF.OCCUPATION = OCCUPATIONS.OCCUPATION_CODE

如果您有更复杂的需求(例如:您可能更喜欢“最近”的值而不是最大值-那么我们需要问题提供足够的细节以实现答案。

相关问题