SQL Server で次のエラーが発生します。
メッセージ 512、レベル 16、状態 1、行 18 サブクエリが複数の値を返しました。サブクエリが =、!=、<、<=、> >、>= の後にある場合、またはサブクエリが式として使用されている場合、これは許可されません。
私のコードは次のとおりです。
DECLARE
@personNumber varchar(20),
@itemNumber varchar(20)
SET @personNumber = 'null'
SET @itemNumber = 'null'
SELECT
OU.UserID
,OU.Name
,IGWQ.itemNumber
,IG.itemName
,IGWQ.QuantityOnHand
FROM dbo.Table1 IGWQ
INNER JOIN Table2 OU ON IGWQ.UserId = OU.UserId
INNER JOIN Table3 IG ON IGWQ.itemNumber = IG.itemNumber
WHERE IGWQ.userid IN (CASE WHEN @personNumber = 'null'
THEN ( SELECT DISTINCT
UserID
FROM Table2 WITH(NOLOCK)
WHERE [Role] = '01')
ELSE @personNumber
END)
AND IGWQ.itemNumber IN (CASE WHEN @itemNumber = 'null'
THEN ( SELECT DISTINCT
itemNumber
FROM dbo.Table1 WITH(NOLOCK))
ELSE @itemNumber
END)
誰でもこの問題の解決策を提案できますか? 「IN」を使用すると問題が解決すると思いました。