Sql server 子查询返回了1个以上的值错误

Sql server 子查询返回了1个以上的值错误,sql-server,Sql Server,运行此代码时,我得到了错误 子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情 如果case语句返回的值超过1,请帮助您的子查询 您必须只返回一个值,因为此子查询在CR表的每行执行 可以在每个子查询中使用TOP 1 例如: SELECT CASE CR.claim_status WHEN 'RC' THEN (SELECT ins_clause_no FROM tbl_rej_c

运行此代码时,我得到了错误

子查询返回了多个值。这是不允许的,因为 子查询后面是=,!=,=或者当子查询用作 表情


如果case语句返回的值超过1,请帮助您的子查询

您必须只返回一个值,因为此子查询在CR表的每行执行

可以在每个子查询中使用TOP 1

例如:

SELECT 
    CASE CR.claim_status 
       WHEN 'RC' 
          THEN (SELECT ins_clause_no 
                FROM tbl_rej_code_master RCM 
                WHERE CR.s_no IN (SELECT s_no 
                                  FROM claim_rejection_code_trans CRCT 
                                  WHERE CRCT.irrmp_sr_no = RCM.rej_srno)) 
    END 
FROM   
    tblclaimregistration CR 

SELECT 
    CASE CR.claim_status 
       WHEN 'RC' THEN (SELECT clause_no 
                       FROM claim_rejection_code_trans CRCT 
                       WHERE CR.s_no = CRCT.s_no) 
    END AS Clause_No 
FROM
    tblclaimregistration CR; 

错误消息很清楚,子查询返回多行。还有什么不清楚的?没有@Sreenu131的命令吗?@Larnu只有ORDER BY,我忘了说谢谢broAs@Sami说,这里的错误很清楚。当子查询返回超过1行的不同值时,您希望发生什么?如果子查询返回值为'RC'和'AB'的行,则CASE表达式的计算结果是否仍应为true?或者您真的希望子查询只返回1行吗?如果是这种情况,那么您似乎需要在子查询的WHERE中包含更多的条件,或者您没有正确理解您的数据,它应该返回多行。如果没有ORDER BY,则可能会返回一个随机行,而该随机行很可能不是OP后面的行。Hi@Larnu这是真的。我忘了写订单了。谢谢你的提示。
SELECT 
CASE CR.claim_status 
   WHEN 'RC' 
      THEN (SELECT TOP 1 ins_clause_no 
            FROM tbl_rej_code_master RCM 
            WHERE CR.s_no IN (SELECT s_no 
                              FROM claim_rejection_code_trans CRCT 
                              WHERE CRCT.irrmp_sr_no = RCM.rej_srno ORDER BY <Your Column>)) 
END 
FROM   
tblclaimregistration CR 

SELECT 
CASE CR.claim_status 
   WHEN 'RC' THEN (SELECT TOP 1 clause_no 
                   FROM claim_rejection_code_trans CRCT 
                   WHERE CR.s_no = CRCT.s_no ORDER BY <Your Column>) 
END AS Clause_No 
FROM
tblclaimregistration CR;