sqlserver 计算同比,环比增长
/****** Script for SelectTopNRows command from SSMS ******/ SELECT [fdSequenceID] ,[fdInnerTime] ,[fdTime] ,[fdData] ,[fdState] ,[fdUpdateTime] ,[fdCreateTime] FROM [NewDBTest].[dbo].[tbDataMonthHG] WITH f AS ( SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbDataMonthHG] ) select t.*, fdRate=(cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(25,10)) as varchar(50))+'%' ) --小数变百分数 from f t left join f d on t.fdInnerTime = DateAdd(year,1,d.fdInnerTime) and t.fdSequenceID = d.fdSequenceID --同比增长 order by fdSequenceID,id asc
环比增长:
WITH f AS ( SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbDataMonthHG] where fdSequenceID <100 ) select t.*, fdRate=(cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(25,10)) as varchar(50))+'%' ) --将分数变为百分数 from f t left join f d on t.fdInnerTime = DateAdd(month,1,d.fdInnerTime) and t.fdSequenceID = d.fdSequenceID --获取根据时间获取上月时间 order by fdSequenceID,id asc
某一时间点与相邻的上一个时间的增长
WITH f AS ( SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbData] ) SELECT t.fdSequenceID,t.fdInnerTime,t.fdTime,t.fdData,t.fdState,t.fdUpdateTime,t.fdCreateTime,t.id, (select cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(35,10)) as varchar(50))+'%') AS fdRate from f t LEFT JOIN f d on t.id=d.id+1 where t.fdSequenceID = d.fdSequenceID ORDER by t.fdSequenceID ASC -- 不会返回null WITH f AS ( SELECT ROW_NUMBER()OVER( partition by fdSequenceID ORDER BY fdTime) AS id, * FROM [NewDBTest].[dbo].[tbData] where fdSequenceID<188 ) select t.*, cast(cast(100*((t.fdData/NULLif(d.fdData,0))-1) as numeric(25,10)) as varchar(50))+'%' from f t left join f d on datediff(day, DateAdd(day,d.id-1,DateAdd(month,d.fdSequenceID-1,'1900-1-1')), DateAdd(day,t.id-1,DateAdd(month,t.fdSequenceID-1,'1900-1-1')) ) > 0 -- 会返回null
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端