Запрос на основе даты

#sql #date #oracle11g #case

Вопрос:

Я пытаюсь запустить это в качестве теста для проверки FISCAL_START диапазона дат.

 SELECT FISCAL_START,DESCRIPTION,
(
CASE FISCAL_START
WHEN  FISCAL_START = '2014-03-31' THEN  DESCRIPTION
WHEN  FISCAL_START = '2014-09-29' THEN  DESCRIPTION
ELSE 'Test Failed'
END ) 
FROM GL_PERIOD
 

продолжайте получать ошибку, в которой отсутствует ключевое слово.

Комментарии:

1. с какой базой данных вы работаете

2. ИЗВИНИТЕ за это … это был Оракул 11

Ответ №1:

Вы перепутали синтаксис case выражения.

То, что вы хотите, вероятно,:

 SELECT FISCAL_START, DESCRIPTION,
       CASE WHEN FISCAL_START >= DATE'2014-03-31'
             AND FISCAL_START <= DATE'2014-09-29' THEN DESCRIPTION
            ELSE 'Test Failed'
       END 
FROM GL_PERIOD
 

Который можно упростить следующим образом:

 SELECT FISCAL_START, DESCRIPTION,
       CASE WHEN FISCAL_START BETWEEN DATE'2014-03-31' AND DATE'2014-09-29' THEN DESCRIPTION
            ELSE 'Test Failed'
       END 
FROM GL_PERIOD
 

Комментарии:

1. Описание столбца тип данных?

2. Извините, что теперь это работает без правок.

3. Сейчас я пытаюсь добиться того, чтобы использовать имена столбцов FISCAL_START и FISCAL_END следующим образом … Код Psuedo таков : Выберите ОПИСАНИЕ из GL_PERIOD, где Entry_Date ( который находится в представлении под названием РАБОТА и не имеет прямой связи с GL_PERIOD) находится между FISCAL_START и FISCAL_END ( которые находятся в таблице GL_PERIOD)

4. Здесь у вас есть ответ на ваш первоначальный вопрос. Задайте новый вопрос, если хотите получить другой ответ.