SQL中的无效关系运算符

时间:2015-08-06 23:39:45

标签: oracle operator-keyword relational

select
create_date
,resolved_date
,to_char(create_date, 'YYYY') as year_create
,to_char(create_date, 'MM') as month_create
,to_char(create_date, 'WW') as week_create
,to_char(create_date,'Q') as quarter_create
,to_char(resolved_date, 'YYYY') as year_resolved
,to_char(resolved_date, 'MM') as month_resolved
,to_char(resolved_date, 'WW') as week_resolved
,to_char(resolved_date,'Q') as quarter_resolved
,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 '1' then 'a'
when '2' then 'b'
when '3' then 'c'
else null 
end 

group by
create_date
,resolved_date
,to_char(create_date, 'YYYY') 
,to_char(create_date, 'MM') 
,to_char(create_date, 'WW') 
,to_char(create_date,'Q') 
,to_char(resolved_date, 'YYYY') 
,to_char(resolved_date, 'MM') 
,to_char(resolved_date, 'WW') 
,to_char(resolved_date,'Q') 
,item
,site
,status
,contact_time
,impact_label

order by item, site, create_date;

有人可以帮我发现

的错误
  

无效的关系运算符

(它逐行说)。我不知道我可能遗漏的地方><= ?

2 个答案:

答案 0 :(得分:2)

你的案子结构不合理。试试这个:

SELECT create_date,
         resolved_date,
         TO_CHAR (create_date, 'YYYY') AS year_create,
         TO_CHAR (create_date, 'MM') AS month_create,
         TO_CHAR (create_date, 'WW') AS week_create,
         TO_CHAR (create_date, 'Q') AS quarter_create,
         TO_CHAR (resolved_date, 'YYYY') AS year_resolved,
         TO_CHAR (resolved_date, 'MM') AS month_resolved,
         TO_CHAR (resolved_date, 'WW') AS week_resolved,
         TO_CHAR (resolved_date, 'Q') AS quarter_resolved,
         item,
         site,
         status,
         contact_time,
         impact_label,
         (CASE
             WHEN item = '1' THEN 'a'
             WHEN item = '2' THEN 'b'
             WHEN item = '3' THEN 'c'
             ELSE NULL
          END)
            AS new_column_name
    FROM mytable
   WHERE create_date BETWEEN TO_DATE ('2013/03/01', 'YYYY/MM/DD')
                         AND TO_DATE ('2015/08/06', 'YYYY/MM/DD')
ORDER BY item, site, create_date;

答案 1 :(得分:0)

我猜你想要

    select
       create_date
      ,resolved_date
      ,to_char(create_date, 'YYYY') as year_create
      ,to_char(create_date, 'MM') as month_create
      ,to_char(create_date, 'WW') as week_create
      ,to_char(create_date,'Q') as quarter_create
      ,to_char(resolved_date, 'YYYY') as year_resolved
      ,to_char(resolved_date, 'MM') as month_resolved
      ,to_char(resolved_date, 'WW') as week_resolved
      ,to_char(resolved_date,'Q') as quarter_resolved
      ,item
      ,site
      ,status
      ,contact_time
      ,impact_label
      ,(case item 
        when '1' then 'a'
        when '2' then 'b'
        when '3' then 'c'
        else null 
         end) as new_column_name 
  from mytable
 where create_date between to_date('2013/03/01','YYYY/MM/DD') 
                      and to_date('2015/08/06','YYYY/MM/DD')
 order by item, site, create_date;

我已删除group by子句,因为您没有进行任何类型的聚合。由于您显然希望case语句更改item列的显示方式,因此我将其移至select列表。

如果这不是您想要的,那么如果您编辑问题以包含测试用例,那将非常有用。向我们展示表格定义,向我们展示插入几行的DML,向我们展示您想要的结果,并向我们展示您获得的结果。