我转动了一张桌子,我有一个基础值,比方说95%。
架构就像
Name, BaseValue, Quarter1, Quarter2, etc..
West, 95% , 0.5% , -0.2% , ...
我希望第1季度是BaseValue + Quarter1的初始值,即。 95.5%。
我希望第二季度成为Quarter1 + Quarter2的初始值,即。 95.3%。
这是SQLFiddle中的设置
答案 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
;