2015-03-16 1 views
0

Я эту таблицу «Пробег» со следующими даннымиДобавьте строки в таблице после того, как проверить это с другой таблицей

user DateMil  Dist 
10 2014-09-04  102 
10 2014-09-07  250 
15 2014-09-04  180 
15 2014-09-06  135 

и другой таблицы «Initialization» со следующими данными

user DateInit   Init 
10 2014-09-03  12500 
15 2014-09-03  20000 

Как мне нужно получить последние данные таблицы «Инициализация» и присоединиться к ней с таблицей «Пробег» с тем же пользователем и добавить новые строки в таблицу «Инициализация». Итоговая таблица должна быть ниже

user DateInit   Init 
10 2014-09-03  12500 
10 2014-09-04  12602(12500+102=last(init)+Dist) 
10 2014-09-07  12852(12602+250) 
15 2014-09-03  20000 
15 2014-09-04  20180(2000+180) 
15 2014-09-06  20315(20180+135) 
+0

ли вы посмотрите на это: http://stackoverflow.com/questions/4516261/ подитоги-и-SQL – Ako

ответ

2

Вы можете использовать CTE, чтобы собрать UNION из двух исходных таблиц. Затем если вы используете SQL SERVER 2012+, вы можете использовать SUM для расчета текущих итогов:

;WITH CTE AS (
    SELECT [user], DateMil AS DateInit, Dist AS Init 
    FROM Mileage 

    UNION 

    SELECT [user], DateInit, Init 
    FROM Initialization 
) 
SELECT [user], DateInit, 
     SUM(Init) OVER (PARTITION BY [user] ORDER BY DateInit) As Init 
FROM CTE 

SQL Fiddle Demo here