小白提升日记 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 防火墙的混合模式配置
  • ¥15 Ubuntu不小心注销了要怎么恢复啊
  • ¥15 win10电脑安装完plcsim advanced4.0运行时为什么会提示找不到虚拟网卡
  • ¥15 安装powerbuilder10卡在安装程序正在运行这个页面 没有下一步任何指令
  • ¥15 关于mpi的问题:请问遇到这种情况需要怎么解决,出现这个问题后电脑不能进行mpi多核运行只能进行单核运行
  • ¥50 微信聊天记录备份到电脑提示成功了,但还是没同步到电脑微信
  • ¥15 python怎么在已有视频文件后添加新帧
  • ¥20 虚幻UE引擎如何让多个同一个蓝图的NPC执行一样的动画,
  • ¥15 fluent里模拟降膜反应的UDF编写
  • ¥15 MYSQL 多表拼接link