小白提升日记 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 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效