![](/img/trans.png)
[英]How to add next and subtract preceding row in SQL Server based on condition
[英]SQL Server : PRECEDING with another condition
我有一个运行良好的查询:该查询是要查找过去3个月和去年的总和和平均值。 AwardCode
正常,直到我收到一个新请求,即使用AwardCode
将查询细分为更多详细信息。
那么如何包括呢?
我的意思是这个部分
SUM(1.0 * InvolTerm) OVER (ORDER BY Calendar_Date ASC
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS InvolMov3Mth,
我想根据AwardCode
查找最近3个月。
我正在工作的原始查询是
SELECT
Calendar_Date, Mth, NoOfEmp, MaleCount, FemaleCount,
SUM(1.0*InvolTerm) OVER (ORDER BY Calendar_Date ASC
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS InvolMov3Mth,
SUM(1.0*TotalTerm) OVER (ORDER BY Calendar_Date ASC
ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS TermSum12Mth
FROM @X
结果是
但是现在我需要添加另一个组AwardCode
SELECT
Mth, AwardCode, NoOfEmp, MaleCount, FemaleCount,
SUM(1.0 * InvolTerm) OVER (ORDER BY Calendar_Date ASC
ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS InvolMov3Mth,
SUM(1.0 * TotalTerm) OVER (ORDER BY Calendar_Date ASC
ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS TermSum12Mth
FROM @X
结果将是这样
您会注意到整个期间的InvolMov3Mth和TermSum12Mth的总和与上面的查询不匹配
我想我找到了问题的答案。
我在ORDER BY之前使用PARTITION BY AwardCode
似乎在工作。
SUM(1.0*TotalTerm) OVER (PARTITION BY AwardCode ORDER BY Calendar_Date ASC
ROWS BETWEEN 11 PRECEDING AND CURRENT ROW) AS TermSum12Mth,
是。 “分区依据”将使其适合您的要求
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.