返回子查询的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
plusorderby
以返回一行
修正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
避免子查询返回多行错误。我还提到了另一种更有意义的方法