我試圖計算運行計數爲每2行類似下面,動態計數每2行
CREATE TABLE sales
(
EmpId INT,
Yr INT,
Sales DECIMAL(8,2)
)
INSERT INTO sales (EmpId, Yr, Sales)
VALUES (1, 2005, 12000), (1, 2006, 18000), (1, 2007, 25000),
(1, 2008, 25000), (1, 2009, 25000),
(2, 2005, 15000), (2, 2006, 6000), (2, 2007, 6000)
SELECT
EmpId, Yr, sales,
SUM(Sales) OVER (PARTITION BY empid ORDER BY empid ROWS BETWEEN 2 PRECEDING AND CURRENT ROW) AS TotalSales2
FROM
sales
輸出:
EmpId Yr sales TotalSales2
-----------------------------------
1 2005 12000 12000
1 2006 18000 30000
1 2007 25000 55000
1 2008 25000 68000
1 2009 25000 75000
2 2005 15000 15000
2 2006 6000 21000
2 2007 6000 27000
但預期輸出:
EmpId Yr Sales TotalSales2
-----------------------------------
1 2005 12000 12000
1 2006 18000 30000
1 2007 25000 25000
1 2008 25000 50000
1 2009 25000 25000
2 2005 15000 15000
2 2006 6000 21000
2 2007 6000 6000
我在這個查詢中做錯了什麼?
注意:SQL Servre的版本是2012年
建議改變(ROW_NUMBER)OVER(PARTITION(BY EMPID ORDER BY年)+ 1)/ 2 AS GRP - 改變1爲-1,然後這適用於較大的組的大小。 +1適用於組大小爲2的組,但在錯誤的方向上偏移較大的組! –
如果我想查找每個EmpId的前12行和另12行的運行總數,我該怎麼辦? – MMMMS
@MaxSzczurek謝謝,這是非常有用的。 –