我正在創建一個具有WHERE CASE WHEN
語句的SQL查詢。我做錯了什麼,並得到錯誤。WHERE CASE WHEN與存在語句
我的SQL語句就像
DECLARE @AreaId INT = 2
DECLARE @Areas Table(AreaId int)
INSERT INTO @Areas SELECT AreaId
FROM AreaMaster
WHERE CityZoneId IN (SELECT CityZoneId FROM AreaMaster WHERE AreaId = @AreaID)
SELECT *
FROM dbo.CompanyMaster
WHERE AreaId IN
(CASE WHEN EXISTS (SELECT BusinessId
FROM dbo.AreaSubscription
WHERE AreaSubscription.BusinessId = CompanyMaster.BusinessId)
THEN @AreaId
ELSE (SELECT [@Areas].AreaId FROM @Areas)
END)
我得到錯誤的
消息512,級別16,狀態1,行11
子查詢返回多個值。這在子查詢 如下時不允許=,!=,<,< =,>,> =,或當子查詢用作 表達。
請幫助成功運行查詢。我的邏輯是在每行的(語句)中檢查條件AreaId
。
我想選擇該行,只有當
- 公司擁有訂閱進入
AreaSubscription
由@AreaId
- 表
AreaSubscription
通過沒有訂閱條目的特定區域,然後在(SELECT [@Areas].AreaId FROM @Areas)
'SELECT [@Areas] .AreaId FROM @ Areas'是否返回多個值? – Nithesh
是的,它返回我在查詢之前創建的區域列表。 –
我認爲子查詢例外就在那裏。 '(SELECT BusinessId FROM dbo.AreaSubscription WHERE AreaSubscription.BusinessId = CompanyMaster.BusinessId)''?多? – Nithesh