要点は、句のemployee_id番号のリストを返したいということです。IN
employee_idlike(2,3,4,5)と a company_idlikeのリストが与えられ5ます。これらの一部は に属しcompany=5、一部は属しません。これらのいずれかが に属している場合、句company=5ではそれらの ID 番号のみを使用したいと考えています。IN指定されたemployee_id番号のどれも に属していない場合、 のすべての番号company=5を返したいと思います。employee_idcompany=5
WHENここにロジックがありますが、残念ながら、サブセレクトから句内で複数の値を返すことはできないため、このステートメントはエラーを返します。
既存の句を変更しようとしているWHEREので、カーソルなどを使用せずに、このステートメントに変更を加える必要があります。これらを一連の AND/OR に変換する方法があるに違いないことはわかっていますが、わかりません。
助けてくれてありがとう!
SELECT employee_id FROM employees
WHERE company_id=5
AND employee_id IN (
CASE
WHEN NOT EXISTS(SELECT employee_id FROM employees WHERE company_id=5 AND employee_id IN (2,3,4,5)) THEN
SELECT employee_id FROM employees WHERE company_id=5
ELSE
SELECT employee_id FROM employees WHERE company_id=5 AND employee_id IN (2,3,4,5)
END
)