WHERE CASE WHEN
bildirimi olan bir SQL sorgusu oluşturuyorum. Yanlış bir şey yapıyorum ve hata alıyorum. BenVarolan Bildirimi
Msg 512, Level 16, State 1, Hat 11
olarak hatayı alıyorumgibiDECLARE @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)
My SQL deyimi Alt sorgu 1'den fazla değer döndürdü olduğunu. Alt sorgu aşağıdaki = =, = <, < =,>,> = veya alt sorgu ifade olarak kullanıldığında alt sorguya izin verilmez.
Sorgunuzu başarılı bir şekilde çalıştırmak için lütfen yardım edin. Benim mantığım her satır için koşullu AreaId
(ifade) kontrol etmektir.
Ben
- şirket abonelik girdi yok
@AreaId
- masanın
AreaSubscription
geçti belirli alan içinAreaSubscription
içine abonelik girişi olduğunda sadece o(SELECT [@Areas].AreaId FROM @Areas)
'SELECT [@Areas] .AreaId FROM @ Areas' bu dönüşü birden çok değer mi? – Nithesh
Evet, daha önce oluşturduğum alanların listesini sorguya ver. –
Sanırım alt sorgu istisnası var. (SELECT BusinessId FROM dbo.AreaSubscription WHERE AreaSubscription.BusinessId = CompanyMaster.BusinessId) 'ın sonucu nedir? Birden? – Nithesh