ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

SQL 同比环比

2022-01-04 21:04:54  阅读:369  来源: 互联网

标签:ym 订购 日期 销量 订单 同比 SQL 环比 strftime


描述 数据来源使用frdemo的订单明细和订单表

效果图

一、下拉框选择年份参数筛选

select distinct strftime('%Y',订购日期) as year from 订单 order by year asc

二、页面隔行变色

条件属性隔行变色

三、在SQL中计算同环比,不在单元格内计算与过滤


select t.m,t.ym,

      t.销量,

      t1.销量 同期,

      (case when t1.销量 is null then '' 

          else (t.销量-t1.销量)/t1.销量 end) 同比,

      t2.销量 上期,

      (case when t2.销量 is null then '' 

          else (t.销量-t2.销量)/t2.销量 end) 环比

from 

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '1997'

group by strftime('%Y-%m',b.订购日期)

) t   -- 1997年 m月份 ym年月 销量 销售额

left join

(

select strftime('%m',b.订购日期)+0 m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '1996'

group by strftime('%Y-%m',b.订购日期)

) t1 on t.m=t1.m  -- 1996 年 m月份 ym年月 销量 销售额

left join

(

select (case when strftime('%m',b.订购日期)+0 <=11

        then strftime('%m',b.订购日期)+1 end) m, -- 1997年 使用then判断 ym中月份小于等于11 将月份+1

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '1997'

group by strftime('%Y-%m',b.订购日期)

union

select (case when strftime('%m',b.订购日期)+0 =12

        then 1 end) m,

      strftime('%Y-%m',b.订购日期) ym,

      sum(a.数量) 销量

from 订单明细 a

    left join 订单 b on a.订单ID=b.订单ID

where strftime('%Y',b.订购日期) = '1996'

group by strftime('%Y-%m',b.订购日期)

) t2 on t.m=t2.m

四、比例为负时加粗标红

 颜色+字体 没有生效

 背景颜色 + 字体 生效

解决方法 条件属性分开设置

先加粗 先显示红色 先后顺序好像导致最终显示有所出入 (咱也不知道这是为啥)

需要先加粗后显红才能达到下图显示效果

如果是先显红 后加粗 最终结果显示只是加粗的情况

 

 

效果图

 五、标题随年份动态显示

将三、步骤中年份替换参数名

标签:ym,订购,日期,销量,订单,同比,SQL,环比,strftime
来源: https://blog.csdn.net/nanyangnongye/article/details/122301794

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有