私は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
考えられる食べ物:データセット内の行と列の特定の交差によって、複数の値が発生する可能性はありますか?それについて考えるもう一つの方法は、いくつかの同じデータを提供することです。この場合、表形式で見ることが期待されるものです。あなたはすぐにテーブルにテーブルを埋め込むことなく、あなたがそれをするのに困っていることがわかります。コンパイラが不幸な理由です。 – xQbert
'case'は、結果セット全体ではなく、スカラー値に対してのみ機能します。したがって、@ ROLEID = 1の場合(...