2015-03-02 86 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