4

次のようなサンプル クエリがあります。

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)

クエリを実行すると、次のことを示すエラーがポップアップ表示されます。

キーワード「is」付近の構文が正しくありません。

この人たちのための回避策はありますか?

ありがとう!

このクエリの目的は、パラメーター @qualified で渡された値に応じて、テーブル内の null 行と null 以外の行を取得することです。

4

4 に答える 4

0

これを試してください(未テスト)

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 
于 2013-02-13T08:57:37.770 に答える
0

構文が正しくありません: http://msdn.microsoft.com/en-IN/library/ms181765.aspxをご覧ください。

また、CASEの使用方法を簡単に提案できるように、正確な要件を投稿してください。

于 2013-02-13T09:02:26.483 に答える
0

してみてください:

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 
于 2013-02-13T09:11:30.823 に答える