1
У меня есть запрос с дополнительными параметрами диапазона дат, которые я пытаюсь выработать с футляром, но борется.SQL Server CASE в выражении WHERE с daterange
- Если обе даты NULL, вернуть все, включая NULL даты строки
- Если оба имеет значения, возвращает только те, в диапазоне
- Если FROM_DATE имеет значение, и to_date нуля, вернуть все> FROM_DATE
- Если FROM_DATE имеет нулевое значение, и to_date имеет значение, вернуть все < TO_DATE
так в основном что-то вроде:
SELECT *
FROM TABLE
WHERE CASE WHEN (@FROM_DATE IS NOT NULL and @TO_DATE IS NOT NULL) THEN
DATE BETWEEN ISNULL(@FROM_DATE,1/1/1900) and ISNULL(@TO_DATE,1/1/2999)
ELSE
DATE = DATE ?
Справка была бы принята с благодарностью!
Могу ли я спросить, почему Option (RECOMPILE)? – penderi
@penderi http://www.sommarskog.se/dyn-search.html –
СПАСИБО, это работает! Эти даты, скорее всего, будут вне сферы действия, я просто не знал о другом способе этого. Если есть что-то более эффективное, я, безусловно, буду открыт для предложений. – Jay