0
我基本上有一个case语句,显示每个人的利润总额和一个月迄今为止的总和。我的想法是我想显示该人的日常数字以及他们整个月的总数。SQL通过分区
我的问题是,当我将结果限制在昨天(应该是每日数字)时,这会影响月份值的计算(只计算当天的总和而不是整个月份)。
这是因为总的月份值都超出了查询的范围。无论如何都要正确计算每个人的整个月份值,而不必在影响结果的地方设置限制。
例如 结果:
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)
好吧,我会看看。我设法让它显示我想要的结果,但我的主要问题是,只要我限制到特定的日子结果,它会混淆整个月的总数。我的主要问题确实是如何显示结果和计算超出了查询范围的限制?如果这是有道理的 –
这个结果只是给了我与日常数字 –
@RyanGadsdon完全相同的月份数字。 。 。这只有在特定月份的表中有一天数据的情况下才有可能。你确定'WHERE'只在年和月吗? –