1

下面的代码对我不起作用,如果可能的话,我希望得到解决方法的帮助。

我试图根据日期排除某些元素,但我没有运气。

到目前为止,我的代码看起来有点像这样:

SELECT CASE  
WHEN date > '2013'  
       THEN element NOT IN ('e1', 'e2', 'e3') --exclude 3 elements  
       WHEN date > '2012' AND date <= '2013'  
       THEN element NOT IN ('e2', 'e3') --exclude 2 elements  
       WHEN date > '2011' AND date <= '2012'  
       THEN element NOT IN ('e3') --exclude 1 element  
       WHEN date <= '2011'  
       THEN element -- no elements excluded  
       END  
FROM elementTable 

这是伪代码。sql 给出的错误是“NOT 语法不正确”。我不完全确定为什么,但它似乎不喜欢我的 NOT IN 声明。

欢迎任何形式的提示、提示或帮助。

提前致谢。

4

2 回答 2

0

尝试这个。

SELECT CASE 
   WHEN [DATE] > '2013' AND element NOT IN ('e1', 'e2', 'e3')
   THEN element 
   WHEN date > '2012' AND date <= '2013' AND element NOT IN ('e2', 'e3') --exclude 2 elements
   THEN element 
   WHEN date > '2011' AND date <= '2012' AND element NOT IN ('e3') --exclude 1 element
   THEN element 
   WHEN date <= '2011'
   THEN element -- no elements excluded
   ELSE
    NULL
   END
FROM elementTable
于 2013-06-03T22:40:08.017 回答
0

您正在尝试在while 语句的THEN部分中添加表达式。CASE而不是使用CASE尝试将条件移动到WHERE部分:

SELECT element
FROM elementTable
WHERE (date > '2013' AND element NOT IN ('e1', 'e2', 'e3'))
OR (date > '2012' AND date <= '2013' AND element NOT IN ('e2', 'e3'))
OR (date > '2011' AND date <= '2012' AND element NOT IN ('e3'))
OR date <= '2011'
于 2013-06-03T22:46:00.463 回答