SQL Server SUM函数和两个最大日期之间

fumotvh3  于 2022-12-26  发布在  其他
关注(0)|答案(1)|浏览(127)

我试图在按ID分组的日期中使用MAX函数找出两个日期之间的总金额。第365date列是sessiondate-364列的差值。目前,我使用此查询得到的是总金额,但我想找出这两个日期列(即365天)之间的金额。
这是我的疑问:

SELECT
    DATEADD(day, -364, (MAX(sessiondate))) AS 365date,
    MAX(sessiondate)) AS lastdate,
    SUM(Amount) AS amount,
    ID  
FROM
    tablename 
WHERE
    date BETWEEN 365date AND lastdate 
GROUP BY 
    MemberID

日期|最后日期|金额|识别号|输出量(仅最近365天)|总额(全年)
2020年7月29日|2021年7月28日|一百|1个|一千五百|63000
2020年8月29日|二○二一年七月二十八日|五百|1
2020年2月5日|二○二一年七月二十八日|六百|1
2020年1月15日|二○二一年七月二十八日|三百|1
二○ ○ ○年十月十日|二○二一年七月二十八日|五万|1
一九八九年十月十日|二○二一年七月二十八日|一万|1
"所以需要带麦克斯(最后日期),即2021年7月28日,从中减去365天,然后取365天之间的所有天数(2020年7月29日、2020年8月29日、2020年5月2日、15/01/2020)并求和,显示在过去365天列中。对于totalamount(全年)列,需要添加所有金额,无论365天
逻辑:计算日期列(MAX(日期))-364
计算最后日期列Max(lastdate)
计算最后365金额列Sum(金额)Between(MAX(日期))-364 and Max(最后日期)
计算总额(全年)sum(金额)
有人能帮忙吗?

vmpqdwk3

vmpqdwk31#

您可以使用CTE,我已经将您的查询转换为CTE的where子句。

;with cte AS (
SELECT
    DATEADD(day, -364, (MAX(sessiondate))) AS '365date',
    MAX(sessiondate)) AS 'lastdate',
    SUM(Amount) AS 'amount',
    ID  
FROM
    tablename
)
SELECT * FROM cte
WHERE
    DATE BETWEEN 365date AND lastdate 
GROUP BY 
    MemberID

相关问题