2013-12-17 2 views
0

Я развернул таблицу, и у меня есть базовое значение, скажем 95%.Как добавить значения из других столбцов в следующие столбцы

Схема подобна

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

Я хотел бы для 1 квартала будет начальное значение т.е. BaseValue + Quarter1 в. 95,5%.

Я хотел бы, чтобы четверть 2 была четвертой четвертой + начальным значением Quarter2, т.е. 95,3%.

Вот установка в SQLFiddle

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

+0

Вы хотите вставить эти новые значения в новой области, или в том же поле? Новое поле будет довольно простой функцией добавления и будет поддерживать существующие значения. Например, Quarter1Total. –

+0

Я хотел, чтобы это было одно и то же поле. Моя установка для достижения этой цели, вероятно, совершенно неверна. – TerryBull

ответ

0

Unpivot, получить текущие итоги, откинуть назад. Если предположить, что значения числового типа и версии используется 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 
; 
+0

Это сработало для меня .. большое спасибо – TerryBull

0

С моим комментарием выше, я предполагаю, что вы хотите сделать это и сохранить существующие значения столбца. Это простое ОБНОВЛЕНИЕ, использующее оператор +.

ALTER TABLE ADD [4Q13Total] FLOAT 

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

Вы также можете ВЫБРАТЬ значения, если хотите.

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

Да, я просто хочу, чтобы результаты выполнялись как один запрос с теми же столбцами. – TerryBull

+0

Попробуйте запрос SELECT, а затем в качестве второго запроса, который сохранит ваши исходные данные, но позволит вам суммировать столбцы и вернуть этот результат в качестве вашего набора данных. Вы также можете CREATE TABLE с меткой времени, использовать временную таблицу и т. Д. Существует множество способов использования этих данных. –

+0

Можете ли вы показать мне в SQLFiddle? – TerryBull

Смежные вопросы