在与另一个 table 检查后,在 table 中添加行
Add rows in a table after check it with another table
我有这个 table "Mileage" 和以下数据
user DateMil Dist
10 2014-09-04 102
10 2014-09-07 250
15 2014-09-04 180
15 2014-09-06 135
和另一个 table "Initialization" 具有以下数据
user DateInit Init
10 2014-09-03 12500
15 2014-09-03 20000
我需要的是获取 table "Initialization" 的最后一个数据,并将其与同一用户的 "Mileage" 的 table 合并,并在其中添加新行"Initialization"的table。结果table应该如下
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)
您可以使用 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
我有这个 table "Mileage" 和以下数据
user DateMil Dist
10 2014-09-04 102
10 2014-09-07 250
15 2014-09-04 180
15 2014-09-06 135
和另一个 table "Initialization" 具有以下数据
user DateInit Init
10 2014-09-03 12500
15 2014-09-03 20000
我需要的是获取 table "Initialization" 的最后一个数据,并将其与同一用户的 "Mileage" 的 table 合并,并在其中添加新行"Initialization"的table。结果table应该如下
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)
您可以使用 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