sqlserver 计算同比,环比增长
生活随笔
收集整理的這篇文章主要介紹了
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
總結
以上是生活随笔為你收集整理的sqlserver 计算同比,环比增长的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows下CMD命令大全(仅供参考
- 下一篇: 百度有钱花维权电话