Вопрос

I have a sample query like this:

select t1.name,t1.bday,t2.address,t2.contactnum
from table1 as t1
left join table2 as t2 on t1.p_id = t2.p_id
where (case when @qualified = '2' then t2.role is null
        case when @qualified = '3' then t2.role is not null` end)

When I execute the query an error pops up indicating:

Incorrect syntax near the keyword 'is'.

Any idea for a work around for this guys?

Thanks!

The purpose of this query is to get the null rows in the table and the non-null rows depending on the value passed on parameter @qualified.

Это было полезно?

Решение

Try with this:

select t1.name,t1.bday,t2.address,t2.contactnum
from table1 as t1
left join table2 as t2 on t1.p_id = t2.p_id
where (@qualified = '2' AND t2.role is null) OR (@qualified = '3' AND t2.role is not null)

I believe this syntax represents the conditional expression that you were trying to implement. However, such WHERE clause might result in a performance issues. If that would happen you should use:

IF @qualified = '2' THEN
BEGIN
    select t1.name,t1.bday,t2.address,t2.contactnum
    from table1 as t1
    left join table2 as t2 on t1.p_id = t2.p_id
    where t2.role is null
END

IF @qualified = '3' THEN
BEGIN
    select t1.name,t1.bday,t2.address,t2.contactnum
    from table1 as t1
    left join table2 as t2 on t1.p_id = t2.p_id
    where t2.role is not null
END

Другие советы

Try this (Untested)

SELECT t1.name,t1.bday,t2.address,t2.contactnum
FROM table1 as t1
LEFT JOIN table2 AS t2 ON t1.p_id = t2.p_id
WHERE 
    CASE @qualified
        WHEN '2' THEN t2.role is null
        WHEN '3' THEN t2.role is not null 
    END 

Syntax is not correct: Please look at http://msdn.microsoft.com/en-IN/library/ms181765.aspx

Also post you exact requirement so that its easy to suggest how you can use CASE.

Please try:

select t1.name,t1.bday,t2.address,t2.contactnum
from table1 as t1
left join table2 as t2 on t1.p_id = t2.p_id
where (case when t2.role is null then '2' else '3' end)=@qualified 
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top