2017-08-08 9 views
0

私は2つのcriteriasをベースコースのリストを表示するには、店舗の手順に取り組んでいます: 1. courseidを必要としない管理者 2. courseIdに精製SQLクエリ -

を必要としない学生を私は店の手続きがうまくいった。しかし、私はそれを洗練してより読みやすくしたいと思います。私はcase文を追加しましたが、エラーが発生しました"サブクエリは2つ以上の値を返しました。これは許可されていません"。私はいくつかのフィードバックを感謝します。

DECLARE @ROLEID INT = 1; 
select * 
from Courses 
where courseID in (
    case when @ROLEID = 1 then (select coursedID From Department d where d.DepartmentName = 'Accounting') --a ROLEID 1 IS AN ADMINISTRATOR, so there will be several course ids returned 
    else (select coursedID From Department d where d.DepartmentName = 'Accounting' and d.CourseId = 'A101') 
) 

iF @ROLEID = 1) 
BEGIN 
    APPROPPRIATE QUERY HERE 
END ELSE 
BEGIN 
    APPROPPRIATE QUERY HERE 
END 
+1

考えられる食べ物:データセット内の行と列の特定の交差によって、複数の値が発生する可能性はありますか?それについて考えるもう一つの方法は、いくつかの同じデータを提供することです。この場合、表形式で見ることが期待されるものです。あなたはすぐにテーブルにテーブルを埋め込むことなく、あなたがそれをするのに困っていることがわかります。コンパイラが不幸な理由です。 – xQbert

+1

'case'は、結果セット全体ではなく、スカラー値に対してのみ機能します。したがって、@ ROLEID = 1の場合(...