簡體   English   中英

缺少表達式sql

[英]missing expression sql

SELECT
  create_date
  ,resolved_date
  ,item
  ,site
  ,status
  ,contact_time
  ,impact_label
FROM
  mytable  
WHERE
  create_date BETWEEN to_date('2013/03/01','YYYY/MM/DD') 
   AND to_date('2015/08/06','YYYY/MM/DD')
and CASE item 
  WHEN in ('A','B') then '1'
  WHEN in ('C') then '2'
  WHEN in ('D') then '3'
  ELSE null 
  END 
GROUP BY
create_date
,resolved_date
,item
,site
,status
,contact_time
,impact_label

它說我第一次進屋時遇到問題,有人可以幫忙嗎?

如果要在CASE使用IN ,則需要不同的語法:

...
case 
   when item  in ('A','B') then '1' 
   when item in  ('C') then '2' 
   when item  in ('D') then '3' 
   --else null   -- no need , ELSE NULL is default behaviour of CASE
end ...

或更改CASE來更正簡單的搜索語法:

 CASE item 
  WHEN 'A' THEN '1'
  WHEN 'B' THEN '1'
  WHEN 'C' THEN '2'
  WHEN 'D' THEN '3'
  ELSE NULL 
 END 

CASE是一個返回值的表達式。 在您的情況下,它將返回一個字符串值。

WHERE子句由布爾表達式組成。 字符串不是布爾表達式。 我不確定您打算做什么,也許:

(CASE WHEN item in ('A','B') then '1'
      WHEN item in ('C') then '2'
      WHEN item in ('D') then '3'
      ELSE null 
 END) IS NOT NULL

(請注意對CASE的更改以及對IS NOT NULL 。)

但是,這是一個愚蠢的表達,因為它等效於:

item in ('A', 'B', 'C', 'D')

也許您想將CASE添加到SELECT ,為其提供適當的列別名。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM