Я получаю следующее сообщение об ошибке в SQL Server:T-SQL ERROR - подзапрос возвращает более чем на 1 значение
Msg 512, уровень 16, состояние 1, строка 18 Subquery возвращается более чем на 1 значения. Это недопустимо, когда подзапрос следует =,! =, <, < =,>>,> = или когда подзапрос используется как выражение.
Мой код выглядит следующим образом:
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» решило бы проблему.
Вы находитесь на правильном пути, но ваш оператор CASE не может вернуть несколько значений. – cairnz