2015-03-02 105 views
0

這裏是理想的結果:如何通過組獲得累積和

enter image description here

在ID = 14,我需要重置價值暨新cum_value補充。

SQL:(小提琴:http://sqlfiddle.com/#!6/62f01/14

+0

我不知道要很明白「在ID = 14 ,我需要用新的cum_value重新設置附加值。「你能否提供更多細節? – Rubik 2015-03-02 08:28:57

+0

在ID值等於14時,需要* 1000),對於下一個值將在ID = 14時基於新值進行累加.ExExcel中的公式:IF(IDx = 14,P_cum_value * 1000,P_cum_value + ID) – user2286756 2015-03-02 08:32:54

回答

0

你是不那麼遠,但我已經嘗試用更簡單的查詢:

DECLARE @t table(
     id int 
     ) 

INSERT INTO @t (id) 
VALUES (0),(1),(2),(3),(4),(5),(6), 
     (7),(8),(9),(10),(11),(12),(13), 
     (14),(15),(16),(17),(18),(19), 
     (20),(21),(22),(23),(24),(99); 

SELECT * 
     ,SUM(id) 
     OVER(ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Cum_STEPID 
FROM @t 
WHERE id < 14 
UNION 
SELECT * 
     ,SUM(CASE WHEN id = 14 THEN 91000 ELSE id END) 
     OVER(ORDER BY id ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS Cum_STEPID 
FROM @t 
WHERE id >= 14 
+0

@魯比克,你讓我接觸到解決方案。我已經在小提琴上更新了我的最終解決方案:http://sqlfiddle.com/#!6/62f01/14。 – user2286756 2015-03-03 02:05:03