返回子查询的SQL查询返回了多个值错误

返回子查询的SQL查询返回了多个值错误,sql,sql-server,Sql,Sql Server,我有以下疑问。请先看一下 select X.ITEMCODE, X.[ITEM_DESCRIPTION], X.[OPENING_BALANCE], X.[SALES], X.[TOTAL_REJECTS], x.[REJECTION_DISEASES] (X.[SALES] - X.[TOTAL_REJECTS]) as [PRODUCTION_TOTAL], X. [DOCDATE], (X.[OPENING_BALANCE] + (X.[S

我有以下疑问。请先看一下

select 
    X.ITEMCODE, X.[ITEM_DESCRIPTION], X.[OPENING_BALANCE],   
    X.[SALES], X.[TOTAL_REJECTS], x.[REJECTION_DISEASES]
    (X.[SALES] - X.[TOTAL_REJECTS]) as [PRODUCTION_TOTAL], 
    X. [DOCDATE],
    (X.[OPENING_BALANCE] + (X.[SALES]-X.[TOTAL_REJECTS])) AS [CLOSING_BALANCE]
from
    (SELECT DISTINCT 
         T0.ItemCode AS ITEMCODE, T0.ItemName AS [ITEM_DESCRIPTION],
         ISNULL((SELECT SUM(T1.OnHand)  
                 FROM OITW T1 
                 WHERE T1.WhsCode = 'FGS' 
                   AND T1.ItemCode = T0.ItemCode), 0) AS [OPENING_BALANCE],
         ISNULL((SELECT SUM(T1.[Quantity]) 
                 FROM INV1 T1 
                 WHERE T0.[ItemCode] = T1.[ItemCode]), 0) AS [SALES] , 
         (SELECT T1.[DocDate] FROM INV1 T1 
          WHERE T0.[ItemCode] = T1.[ItemCode]) AS [DOCDATE],
         ISNULL((SELECT SUM(cast(T1.[Quantity] as int))  
                 FROM IGE1 T1 
                 WHERE T0.[ItemCode] = T1.[ItemCode]), 0) AS [TOTAL_REJECTS],
         ISNULL((SELECT T1.[U_RejectionOthers]   
                 FROM IGE1 T1 
                 WHERE T0.[ItemCode] = T1.[ItemCode]), 0) AS [REJECTION_DISEASES]
    from 
        OITM T0 
    where 
        T0.[ItmsGrpCod] in ('104', '121', '122', '123', '124', '125', '126', '127', '129', '130', '134', '135', '136', '139', '140', '141', '142', '143', '144', '145')) X
WHERE 
    X.[OPENING_BALANCE] > 0 OR X.[TOTAL_REJECTS] > 0  OR X.[SALES] > 0
在这段代码中,当我试图在主select语句中添加
X.[DOCDATE]
X.[REJECTION\u]
时,我得到以下错误

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


请专家帮助我。

我怀疑下面的
子查询
where
子句中针对给定条件返回了多行

Isnull((SELECT T1.[u_rejectionothers] 
        FROM   ige1 T1 
        WHERE  T0.[itemcode] = T1.[itemcode]), 0) AS[REJECTION_DISEASES] 
您需要修复
where
子句以返回一行,或者修复
TOP
plus
orderby
以返回一行

修正
where
子句。在where子句中输入所有条件,通过这些条件可以在
ige1
表中识别唯一的行

Isnull((SELECT T1.[u_rejectionothers] 
        FROM   ige1 T1 
        WHERE  T0.[itemcode] = T1.[itemcode]
          AND  T1.somecol  = 'XXX'), 0) AS[ REJECTION_DISEASES] 
在子查询

Isnull((SELECT TOP 1 T1.[u_rejectionothers] 
        FROM   ige1 T1 
        WHERE  T0.[itemcode] = T1.[itemcode]
        Order by somecol), 0) AS [REJECTION_DISEASES] 

为什么在这里加上前1名@VR46
Top
避免子查询返回多行错误。我还提到了另一种更有意义的方法