我正在研究测试工具,并为它报告。所以,有一个测试可以每天自动执行几次。并且在一份报告中,我需要显示每次测试的历史数据(带有日期和通过测试次数的图表)以及最近一天通过的测试次数。不要创建此问题的模型:
我有这样的数据结构(简化):
DECLARE @TestResults TABLE
(
TestId INT,
DateOfResult DATE,
TestPassedCount INT
);
INSERT INTO @TestResults VALUES (1,DATEADD(day,-3,GETDATE()), 6);--This test passed 4 times 3 days ago
INSERT INTO @TestResults VALUES (1,DATEADD(day,-1,GETDATE()), 4); --This test passed 4 times yesterday
INSERT INTO @TestResults VALUES (1,GETDATE(), 5); --This test passed five times today
INSERT INTO @TestResults VALUES (2,DATEADD(day,-3,GETDATE()), 6);--This test passed 4 times 3 days ago
INSERT INTO @TestResults VALUES (2,DATEADD(day,-1,GETDATE()), 4); --This test passed 4 times yesterday
SELECT * FROM @TestResults;
最后一次选择将返回我一个数据集:
TestId DateOfResult TestPassedCount
1 2012-06-12 6
1 2012-06-14 4
1 2012-06-15 5
2 2012-06-12 6
2 2012-06-14 4
我怎样才能通过这个查询(在单独的列中)获得最大可用日期的通过测试数?例如,对于 ID 1 的测试,我有 6 月 12、13、14 的数据。所以,在单独的列中我需要得到 5,因为在最新日期 (max(DateOfResults)) 有五个通过测试?
我正在使用 SQL Server 2012。
谢谢!
更新:我找到了方法:
SELECT SubQ.*, r.TestPassedCount FROM (
SELECT *, Max(t.DateOfResult) OVER (PARTITION BY t.TestId ORDER BY t.TestId) as MaxDate FROM @TestResults t
) AS SubQ JOIN @TestResults r ON r.TestId = SubQ.TestId AND r.DateOfResult = SubQ.MaxDate
现在我需要将它应用于真正的查询:) 还有其他方法吗?