首页 > 解决方案 > 尝试计算列上的运行总计后,行附近的语法不正确

问题描述

我在 SERVER 2008 但使用 SSMS 2016

我试图在一张桌子上得到一个运行总数,我试图使用 OVER() 关键字,但它不起作用。输出应如下所示:

Date       | Description    | PRICE | Running Total |
-----------|----------------|-------|---------------|
01/01/2018 | Apple          |  2    |       2       |
02/01/2018 | Apple          |  2    |       4       |
03/01/2018 | Apple          |  0    |       4       |
04/01/2018 | Apple          |  0    |       4       |
05/01/2018 | Apple          |  3    |       7       |
06/01/2018 | Apple          |  3    |       10      |
07/01/2018 | Apple          |  3    |       13      |

我的代码如下

WITH TOTAL AS 
            (
              SELECT 
                     DATE,
                     [Description],
                     [PRICE]
                     FROM PRODUCTS

            )
SELECT  
                    DATE,
        [Description],
        [PRICE],
        SUM([PRICE]) OVER(ORDER BY DATE ROWS UNBOUNDED PRECEDING) AS RUNNINGTOTAL

FROM TOTAL

无法让它工作,在行错误附近不断出现不正确的语法。我哪里错了?

标签: sqlsql-servertsql

解决方案


我认为您不需要使用CTEor ROWS UNBOUNDED PRECEDING

SELECT [DATE], [Description], [PRICE],
       SUM([PRICE]) OVER (ORDER BY [DATE]) AS RUNNINGTOTAL
FROM PRODUCTS;

推荐阅读