我遇到了一个子查询问题,希望有人可以帮助我。SQL子查询超过1个值
如果我运行以下命令:
select t4.code from OITM T0
INNER JOIN DLN1 T1 ON T1.[ItemCode] = T0.[ItemCode]
INNER JOIN ODLN T2 ON T2.[DocEntry] = T1.[DocEntry]
INNER JOIN ITM10 T3 ON T3.[ItemCode] = T0.[ItemCode]
LEFT JOIN ODCI T4 ON T4.[AbsEntry] = T3.[ISCommCode]
WHERE T2.DocEntry = '7060'
结果是:
虽然在某些情况下可能存在的值相匹配的所需的多行和其他人在做不同时。
我写它有一个子查询核对这些结果,并显示一条消息,如果在任一行和[code]列不包含一些特定的查询:
IF(
(SELECT
T4.Code
FROM OITM T0
INNER JOIN DLN1 T1 ON T1.[ItemCode] = T0.[ItemCode]
INNER JOIN ODLN T2 ON T2.[DocEntry] = T1.[DocEntry]
INNER JOIN ITM10 T3 ON T3.[ItemCode] = T0.[ItemCode]
LEFT JOIN ODCI T4 ON T4.[AbsEntry] = T3.[ISCommCode]
WHERE T2.DocEntry = '7060') NOT IN ('22030010','22030001','22030009')
)
BEGIN
SELECT 'MESSAGE'
END
显然,这将无法编译如果它有返回超过1行:
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.
HAVING和他们编译不显示这显然是错误的消息计数不工作。
这是可能的还是我吠叫错了树?
非常感谢。
如何只增加一个'where'子句来查询? –