我的桌子上有“HoursCompleted”,每天计算一次。
CREATE TABLE MyTable
(
Id INT NOT NULL IDENTITY(1,1),
PersonId INT NOT NULL,
DateValue DATE NOT NULL,
HoursToday DECIMAL(3,2) NOT NULL
)
我需要做的是创建一个显示这些字段的视图,以及TotalHoursForPerson。
所以,我可以从View中选择,其中PersonId = x,然后返回:
Id|PersonId|DateValue|HoursToday|Total
1,1,'01-JAN', 5, 5
2,1,'02-JAN', 8, 13
3,1,'03-JAN', 2, 15
etc
etc
但我不确定我是否可以获得“完整”专栏。
答案 0 :(得分:2)
您尝试实现累积总和,这是一种简洁有效的方法:
CREATE VIEW YourView
AS
SELECT Id, PersonId, DateValue, HoursToday,
SUM(HoursToday) OVER (PARTITION BY PersonId ORDER BY Id /* or date */) AS Total
FROM MyTable
然后,查询视图:
SELECT * FROM YourView WHERE PersonId = 42