2013-11-08 3 views
0

У меня есть параметр county, который, если он равен нулю, тогда я хочу выбрать все округа в сотрудничестве, если это не null, то я просто хочу значения для этого округа. Как я могу правильно настроить инструкцию IF? Первая часть IF заявление может вернуть несколько графство IdS, поэтому я поставил WHERE CountyId вsql if statement check for null

SELECT a.CountyId, co.Description as County 
FROM Application as a 
    INNER JOIN Dictionary.Counties as co on a.CountyId = co.Id 
WHERE co.Id in 
    IF @pCountyId is null then 
    BEGIN 
     SELECT cc1.CountyId 
     FROM CountyCollaboration as cc1 
     WHERE cc1.CollaborationId = (SELECT cc2.CollaborationId 
       FROM CountyCollaboration as cc2 
       WHERE cc2.CountyId = @pHiddenCountyId) 
    END 
    ELSE 
    BEGIN 
     SELECT @pCountyId 
    END 
+0

Deja Vu http://stackoverflow.com/questions/19846636/sql-if-statement-verify-for-null-parameter/ –

+0

это другое. Если countyId имеет значение NULL, он использует HiddenCountyId для совместной работы. Если countyId не является нулевым, то он использует только это CountyId – user1202606

+1

Просто примените ту же логику. 'WHERE (@pCountyId IS NULL AND co.Id in (...)) ИЛИ co.ID = @ pCountyId' –

ответ

0
select 
    a.CountyId, 
    co.Description as County 
from 
    Application as a 
     inner join 
    Dictionary.Counties as co 
     on a.CountyId = co.Id 
     inner join 
    CountyCollaboration cc1 
     on co.id = cc1.CountyId 
     inner join 
    CountyCollaboration cc2 
     on cc1.CollaborationId = cc2.CollaborationId 
where 
    c2.CountyId = IsNull(@CountyId, @pHiddenCountyId) 
0

Использование:.

CountryId = case when @counrtyid is null then CountryId else @CounrtyId end