根据条件从日期中减去一天

时间:2014-05-14 19:39:33

标签: sql oracle

我想在某个包含日期的列等于一个月的最后一天时显示输出,然后另一列包含其他日期的列应该等于相同的日期减去1天

SELECT
    CASE WHEN s.audit_date <> null
         THEN us.processing_date = s.audit_date - 1 END processing_date
  , g.mobile_no
  FROM customers cu
 INNER JOIN gsm.mobile_no g ON g.id = cu.id;

但不幸的是,这不起作用..

2 个答案:

答案 0 :(得分:0)

我可以在您的查询中看到一些问题。

  1. 在s.audit_date之后缺少逗号以提供有效的T-SQL语法
  2. 在CASE语句中,您尝试设置列值,只返回所需的值。
  3.   select us.processing_date, s.audit_date,
            CASE  
            WHEN s.audit_date = trunc(s.audit_date, 'MM') THEN s.audit_date - 1
            END processing_date, g.mobile_no
     from customers cu
     inner join gsm.mobile_no g on g.id = cu.id
    

答案 1 :(得分:0)

除其他外,我认为您需要一个else子句并将比较修复为NULL

select (case when s.audit_date is not null then s.audit_date - 1
             else s.processing_date
        end) as processing_date, g.mobile_no
from customers cu inner join
     gsm.mobile_no g
     on g.id = cu.id;