Я - sql новичок, я использую mssql2005
Мне нравится делать выбор с помощью условия, которое является в зависимости от входного параметра
Я попробовал это.
WHERE CF.PROCESS_DATE = '2010-05-05' AND
CASE @CATEGORY_LEVEL
WHEN 'L' THEN CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = ''
WHEN 'M' THEN CAS.SCATEGORY_ID = ''
END
но не работал и произошел ошибка.
sql является трудным программисту новичка.. T.T
Вы можете переписать условие так:
WHERE CF.PROCESS_DATE = '2010-05-05' AND
(
(@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '') OR
(@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '')
)
WHERE CF.PROCESS_DATE = '2010-05-05' AND
(
(@CATEGORY_LEVEL = 'L' AND CAS.MCATEGORY_ID = '' AND CAS.SCATEGORY_ID = '')
OR
(@CATEGORY_LEVEL = 'M' AND CAS.SCATEGORY_ID = '')
)
(К счастью, ваш код работает на других базах данных (например, Postgres, MySQL), SQL Server не имеет первоклассной поддержки boolean, поэтому ваше выражение после THEN не приведет к типу boolean, следовательно, не будет работать в Sql Server
.