2013-12-05 4 views
2

У меня есть таблица с именем myvals со следующими полями:SQL - добавить значения с предыдущей строкой только

ID number 
-- ------- 
1  7 
2  3 
3  4 
4  0 
5  9 

Начиная с 2-го ряда, я хотел бы добавить номер с предыдущим номером строки. Итак, мой конечный результат будет выглядеть следующим образом:

ID number 
-- ------ 
1  7 
2  10 
3  7 
4  4 
5  9 

ответ

5

Вы можете использовать аналитическую функцию LAG

SELECT Id, number + LAG(number,1,0) OVER (ORDER BY Id) FROM table 
+0

Я добавил ссылку –

+0

ahhh right, thanks xxMUROxx! забыл о функции LAG в 2012 году. Он отлично работал. –

0

Первое на первом месте. Вы не можете добавить значение null, чтобы ID 1 должен иметь значение.

+0

Привет ArtK, столбец ID является столбцом идентификаторов в моем случае. –

-1
create table #temp 
(
    month_type datetime, 
    value int 


) 
insert into #temp 
Select '2015/01/01',1 
union 
Select '2015/02/01',2 
union 
Select '2015/03/01',3 
union 
Select '2015/04/01',4 



SELECT t.value,t1.value,(t.value+t1.value)/2 FROM #temp t1 
left join #temp t on t.month_type=Dateadd(MONTH,-1,t1.month_type) 
+0

Спасибо, что ответили на этот вопрос! Ответы только на код [обескуражены] (http://meta.stackexchange.com/a/148274) при переполнении стека, поскольку дамп кода без контекста не объясняет, как и почему решение будет работать, что делает невозможным оригинальный плакат (или любой будущий читатель), чтобы понять логику, лежащую в его основе. Пожалуйста, отредактируйте свой вопрос и включите объяснение своего кода, чтобы другие могли воспользоваться вашим ответом. – AHiggins

+0

Кроме того, это очень полезно, если вы правильно [форматируете блоки кода] (http://meta.stackexchange.com/questions/22186/how-do-i-format-my-code-blocks) - у меня есть сделал это для вас здесь, но это действительно помогает сделать ваш ответ более читаемым! Желаем удачи и приветствуем Stack Overflow! – AHiggins

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