SQL 同比环比
2022/1/5 2:03:58
本文主要是介绍SQL 同比环比,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
描述 数据来源使用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
四、比例为负时加粗标红
颜色+字体 没有生效
背景颜色 + 字体 生效
解决方法 条件属性分开设置
先加粗 先显示红色 先后顺序好像导致最终显示有所出入 (咱也不知道这是为啥)
需要先加粗后显红才能达到下图显示效果
如果是先显红 后加粗 最终结果显示只是加粗的情况
五、标题随年份动态显示
将三、步骤中年份替换参数名
这篇关于SQL 同比环比的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2025-01-11cursor试用出现:Too many free trial accounts used on this machine 的解决方法
- 2025-01-11百万架构师第十四课:源码分析:Spring 源码分析:深入分析IOC那些鲜为人知的细节|JavaGuide
- 2025-01-11不得不了解的高效AI办公工具API
- 2025-01-102025 蛇年,J 人直播带货内容审核团队必备的办公软件有哪 6 款?
- 2025-01-10高效运营背后的支柱:文档管理优化指南
- 2025-01-10年末压力山大?试试优化你的文档管理
- 2025-01-10跨部门协作中的进度追踪重要性解析
- 2025-01-10总结 JavaScript 中的变体函数调用方式
- 2025-01-10HR团队如何通过数据驱动提升管理效率?6个策略
- 2025-01-10WBS实战指南:如何一步步构建高效项目管理框架?