当前位置: 代码迷 >> Oracle管理 >> 请教如下条件下如何写sql
  详细解决方案

请教如下条件下如何写sql

热度:216   发布时间:2016-04-24 04:08:11.0
请问如下条件下怎么写sql
id                        r                                c
 A                   2014-01-01           2014-01-15
 B                  2013-12-20           2014-01-20
 C                  2014-01-10

当前月份是2014年1月

想得到效果

A = C-R
B = C-当前月份第一天       如果R的日期不在当前月份内就取当前月份第一天
C = 当天日期-r                            如果C是空就取当前日期(如果当前日期不在该月内,就取当前月的最后一天)
------解决思路----------------------
引用:
A = C-R
B = C-当前月份第一天       如果R的日期不在当前月份内就取当前月份第一天
C = 当天日期-r                            如果C是空就取当前日期(如果当前日期不在该月内,就取当前月的最后一天)

select c-r as A,C-TRUNC(SYSDATE,'MONTH') AS B,trunc(SYSDATE)-R AS C
FROM T

------解决思路----------------------

select id,
       case
         when c is not null and
              to_char(r, 'yyyymm') = to_char(sysdate, 'yyyymm') then
          c - r
         when c is not null and
              to_char(r, 'yyyymm') <> to_char(sysdate, 'yyyymm') then
          c - trunc(ADD_MONTHS(LAST_DAY(SYSDATE) + 1, -1))
         when c is null then
          trunc(sysdate) - r
       end
  from t
  相关解决方案