如何将其他列中的值添加到下一列中

时间:2013-12-17 16:44:57

标签: sql-server tsql multiple-columns

我转动了一张桌子,我有一个基础值,比方说95%。

架构就像

Name, BaseValue, Quarter1, Quarter2, etc..
West, 95%      , 0.5%    , -0.2%   , ...

我希望第1季度是BaseValue + Quarter1的初始值,即。 95.5%。

我希望第二季度成为Quarter1 + Quarter2的初始值,即。 95.3%。

这是SQLFiddle中的设置

http://sqlfiddle.com/#!3/78dd3/1

2 个答案:

答案 0 :(得分:0)

根据我上面的评论,我假设您要执行此操作并维护现有列值。解决方案是使用+运算符的简单UPDATE。

ALTER TABLE ADD [4Q13Total] FLOAT

UPDATE TABLE
SET [4Q13TOTAL] = [BASEOCC] + [4Q13]

如果您愿意,也可以选择值。

SELECT [BASEOCC] + [4Q13] AS [Q1Total]

答案 1 :(得分:0)

取消透视,获取正在运行的总数,向后旋转。假设值是数字类型,并且使用的版本是SQL Server 2012,here's one way来实现:

WITH UnpivotAndRunningTotals AS (
  SELECT
    Name,
    Attr,
    Value = SUM(Value) OVER (PARTITION BY Name ORDER BY Attr)
  FROM atable
  UNPIVOT (
    Value FOR Attr IN (BaseValue, Quarter1, Quarter2, Quarter3, Quarter4)
  ) AS u
)
SELECT
  Name,
  BaseValue, Quarter1, Quarter2, Quarter3, Quarter4
FROM UnpivotAndRunningTotals
PIVOT (
  MAX(Value) FOR Attr IN (BaseValue, Quarter1, Quarter2, Quarter3, Quarter4)
) AS p
;