【问题标题】:how to add the values as cummulative values in seperate column? [duplicate]如何将值添加为单独列中的累积值? [复制]
【发布时间】:2013-05-14 15:31:23
【问题描述】:
COL COL1    COL2    SUM cumm
1   2   3   6    6
4   5   6   15   21 
7   8   9   24   45

在上表结果集中,我需要像这样的 cumm 列值,如何通过查询来做到这一点,有人可以帮忙吗?

【问题讨论】:

  • 为了使运行总计有意义,您需要一些方法来确定应按什么顺序添加值。您显示的列之一是否应用于确定行的顺序?如果没有,您需要更多列。

标签: sql-server-2008


【解决方案1】:

试试这个 -

查询:

DECLARE @temp TABLE
(
      Col1 INT
    , Col2 INT
    , Col3 INT
    , Col4 INT
)

INSERT INTO @temp (Col1, Col2, Col3, Col4)
VALUES 
    (1,   2,   3,   6),
    (4,   5,   6,   15),
    (7,   8,   9,   24)

SELECT 
      Col1
    , Col2
    , Col3
    , Col4
    , SUM_cumm = SUM(Col4) OVER(
        ORDER BY Col4 
        ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
FROM @temp

输出:

Col1        Col2        Col3        Col4        SUM_cumm
----------- ----------- ----------- ----------- -----------
1           2           3           6           6
4           5           6           15          21
7           8           9           24          45

【讨论】:

  • 您是否正在显示 SQL SERVER 2012 的结果。我认为 OP 需要 SQL SERVER 2008 的解决方案
【解决方案2】:

您可以使用CTE

create table table1
(
    COL int,
    COL1 int,
    COL2 int,
    COL3 int
)
insert into table1
(COL,COL1,COL2,COL3)
values
(1,   2,   3,   6),
(4,   5,   6,   15), 
(7,   8,   9,   24)

select 
rank() OVER (ORDER BY COL3) as [Rank],
t1.COL,
t1.COL1,
t1.COL2,
t1.COL3
into #temp1
from table1 t1

;WITH x AS
(
    SELECT 
        [Rank],
        COL,
        COL1,
        COL2,
        COL3,
        Total=COL3
    FROM #temp1
    WHERE [Rank] = 1
    UNION ALL
    SELECT 
        y.[Rank],
        y.COL,
        y.COL1,
        y.COL2,
        y.COL3,
        x.Total+(y.COL3)
    FROM x INNER JOIN #temp1 AS y
    ON y.[Rank] = x.[Rank] + 1
)
SELECT 
    COL,
    COL1,
    COL2,
    COL3,
    Total
FROM x
OPTION (MAXRECURSION 100);

SQL FIDDLE

【讨论】:

    猜你喜欢
    • 2018-04-15
    • 2020-09-14
    • 1970-01-01
    • 2020-12-19
    • 2013-04-26
    • 2017-11-29
    • 1970-01-01
    • 2021-11-04
    • 2013-02-20
    相关资源
    最近更新 更多