sql server 获取连续5年的统计数据

一、效果

sql 查询结果:

F_ReceiveAmtYearTime
0.002018
0.002019
0.002020
66548.002021
5152.002022

二、SQL

-- PS: 利用sql server中的master..spt_values 
-- 连续5年时间 金额统计 无数据为0
-- 表:FM_Receive 金额字段:F_ReceiveAmt  时间字段:F_ReceiveDate
DECLARE @StartTime DATE = DATEADD(YEAR, -4, GETDATE()), -- 开始时间
        @EndTime DATE = GETDATE();                      -- 结束时间

SELECT ISNULL(a.value, 0) AS ReceiveAmt, b.YearTime
FROM
(
    SELECT ISNULL(SUM(F_ReceiveAmt), 0) AS value, name
    FROM
    (
        SELECT F_ReceiveAmt,
               CAST(YEAR(F_ReceiveDate) AS NVARCHAR(50)) AS name,
        FROM FM_Receive
        WHERE YEAR(F_ReceiveDate) > YEAR(GETDATE()) - 5
    ) y
    GROUP BY name
) a
    RIGHT JOIN
    (
        SELECT CONVERT(VARCHAR(4), DATEADD(YEAR, number, @StartTime), 120) AS YearTime
        FROM master..spt_values WITH (NOLOCK)
        WHERE type = 'P'
              AND number <= DATEDIFF(YEAR, @StartTime, @EndTime)
    ) b
        ON a.name = b.YearTime;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值