WHERE
GROUP.GROUP_ID = 2
AND DEPT.DEPT_ID = 'D'
AND WORK_TYPE_ID IN
(
CASE DEPT_ID
WHEN 'D' THEN 'A','B','C' <- ERROR
WHEN 'F' THEN 'C','D
ELSE 'A','B','C','D'
END
)
I kept on getting errors, like
Msg 156, Level 15, State 1, Line 44
Incorrect syntax near the keyword 'WHERE'.
which leads me to assume that the CASE ... WHEN ... THEN statement does not allow mutiple values for result expression. Is there a way to get the SQL above to work or code the same logic in a different manner in just one simple SQL, and not a procedure or T-SQL script.
AND
(
(CASE DEPT_ID = 'D' AND WORK_TYPE_ID IN ('A','B','C'))
OR
(CASE DEPT_ID = 'F' AND WORK_TYPE_ID IN ('A','B','C'))OR
(CASE DEPT_ID != 'D' AND CASE DEPT_ID != 'F' ANDWORK_TYPE_ID IN ('A','B','C'))
)
Though this could lead to bad performance :-(
Jens K. Suessmeyer
http://www.sqlserver2005.de
Thanks for the reply . It works, and I agree with you that it could lead to performance degradation.
However, if the number of records involved are filtered and limited to, say under 1000 rows, it would still be managable ? Just a feeling, I know it is hard to quantify the expense of a query by just the row count alone.
Kenny
No comments:
Post a Comment