小白提升日记 2022-07-26 16:49 采纳率: 69.2%
浏览 40
已结题

oracle的sql改成mysql版本

oracle语句改写成mysql

 select nvl(sum(is_this_month),0)                        as total,
               nvl((sum(is_this_month) - sum(is_last_month)),0) as
                                                            month_count,
               nvl((sum(is_today) - sum(is_last_day)),0)        as day_count
        from (select case
                         when to_char(TRUNC(SYSDATE - 1), 'dd') = to_char(VALID_DATE, 'dd') then 1
                         else 0 end as
                         is_last_day,
                     case
                         when to_char(sysdate, 'dd') = to_char(VALID_DATE, 'dd') then 1
                         else 0 end as
                         is_today,
                     case
                         when to_char(sysdate, 'MM') = to_char(VALID_DATE, 'MM') then 1
                         else 0 end as
                         is_this_month,
                     case
                         when to_char(TRUNC(add_months(trunc(sysdate), -1), 'MM'), 'MM') = to_char(VALID_DATE, 'MM')
                             then 1
                         else 0 end as
                         is_last_month
              from (SELECT *
                    FROM API_SERVICE
                    WHERE VALID_DATE is not null
                      and VALID_DATE > TRUNC(ADD_MONTHS(sysdate, -1), 'mm'))) b

如何改写成mysql版本

  • 写回答

2条回答 默认 最新

  • 石岩Maple 2022-07-26 17:05
    关注
    
    select sum(ifnull(is_this_month,0)) total,
                 sum(ifnull(is_this_month,0)) - sum(ifnull(is_last_month,0)) month_count,
                 sum(ifnull(is_today,0)) - sum(ifnull(is_last_day,0)) day_count
    from (select
      case when Day(now()) - 1 = Day(VALID_DATE) then 1 else 0 end is_last_day,
        case when Day(now()) = Day(VALID_DATE) then 1 else 0 end     is_today,
        case when Month(now()) == Month(VALID_DATE) then 1 else 0 end is_this_month,
        case when Month(now() - 1) = Day(VALID_DATE) then 1 else 0 end is_last_month
    from (SELECT *
        FROM API_SERVICE
        WHERE VALID_DATE != null
            and VALID_DATE >  Month(now()) - 1)) b
    

    尽力了,你试试

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月3日
  • 已采纳回答 7月26日
  • 修改了问题 7月26日
  • 创建了问题 7月26日

悬赏问题

  • ¥20 如何解决访问网址被屏蔽的情况
  • ¥15 本地运行的vue2项目,使用内网穿透,前端界面一直转圈圈
  • ¥20 powerbuilder datawindow控件导出Excel数据,可不可以不自动覆盖原数据,而是在后面新插入入数据。
  • ¥100 无轴承永磁同步电机控制
  • ¥15 eps里添加本地倾斜模型
  • ¥15 telegram 问题
  • ¥15 nrf52810-c三个a 程序
  • ¥50 求一个半透明没有锯齿的圆角窗体的实现例子
  • ¥15 STM32cubeMX里的FreeRTOS无法释放内存
  • ¥15 CATIA有些零件打开直接单机确定终止