我基本上有一个案例陈述,显示每个人的利润总和和一个月的总和。我的想法是,我想要显示该人的每日数字以及他们整个月的总数。
我的问题是当我将结果限制在昨天(假设是每日数字)时,这会影响月值的计算(只计算当天的总和而不是整个月)。
这是因为月份总值超出了查询的范围。无论如何都要正确计算每个人的整月值,而没有影响结果的界限。
e.g。 结果:
08/09/17: 25
09/09/17: 25
10/09/17: 25
11/09/17: 25 <<<< but only display one day and month total
Overall Month total: 100
这也可以包含空值吗?我想我几乎看到一个动态存储的月份到期值不受where子句的影响。
SELECT SUM(Figure) AS 'Daily Figure',
CASE WHEN
MONTH([DATE]) = MONTH(getdate()) AND
YEAR([DATE]) = YEAR(getdate())
THEN
SUM(Figure)
OVER (PARTITION BY [Name],
MONTH([DATE]))
ELSE 0 END
as [Month To Date Total]
WHERE
dateadd(day,datediff(day,1,GETDATE()),0)
答案 0 :(得分:1)
如果您想要按月更新和当前金额,请使用条件汇总:
SELECT NAME,
SUM(CASE WHEN DAY(DATE) = DAY(GETDATE()) - 1 THEN Figure ELSE 0 END) AS DailyFigure,
SUM(Figure) as MonthToDate
WHERE MONTH([DATE]) = MONTH(getdate()) AND
YEAR([DATE]) = YEAR(getdate())
GROUP BY NAME;
除了本月的第一天之外,其他所有内容都适用。