首页 > 解决方案 > Date based Query

问题描述

I am trying to get this to run as a test for checking FISCAL_START date range.

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

keep getting error that missing key word.

标签: sqldateoracle11gcase

解决方案


您混淆了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

推荐阅读