小白提升日记 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日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵