Sql 查询以获取最近一天通过的测试数
我在测试工具上工作,为它做报告。 因此,有一种测试每天可以自动执行几次。在一个报告中,我需要显示每个测试的历史数据(带有日期和通过测试次数的图表)和最近一天通过测试的次数。 不创建此问题的模型: 我有这样的数据结构(简化): 最后一次选择将返回一个数据集:Sql 查询以获取最近一天通过的测试数,sql,sql-server-2008,Sql,Sql Server 2008,我在测试工具上工作,为它做报告。 因此,有一种测试每天可以自动执行几次。在一个报告中,我需要显示每个测试的历史数据(带有日期和通过测试次数的图表)和最近一天通过测试的次数。 不创建此问题的模型: 我有这样的数据结构(简化): 最后一次选择将返回一个数据集: TestId DateOfResult TestPassedCount 1 2012-06-12 6 1 2012-06-14 4 1 2012-06-15
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
我如何通过这个查询(在单独的列中)获得max available date的通过测试的数量?例如,对于ID为1的测试,我有6月12、13、14日的数据。所以,在另一列中,我需要得到5,因为在最新的日期(max(DateOfResults))有5个通过的测试
我正在使用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
现在我需要将其应用于实际查询:)
还有其他方法吗?我无法执行您的解决方案,可能您遗漏了什么?我有这个错误(我不知道为什么): 因此,我的查询版本几乎相同:
SELECT t2.TestId, t2.DateOfResult ,t2.TestPassedCount FROM @TestResults t2
INNER JOIN (
SELECT t.TestId, MAX(t.DateOfResult) AS MaxDateOfResult from @TestResults t
GROUP BY t.TestId ) groupedTests ON groupedTests.TestId = t2.TestId AND groupedTests.MaxDateOfResult = t2.DateOfResult
ORDER BY t2.TestId
Msg 102, Level 15, State 1, Line 16
Incorrect syntax near 'order'.
SELECT t2.TestId, t2.DateOfResult ,t2.TestPassedCount FROM @TestResults t2
INNER JOIN (
SELECT t.TestId, MAX(t.DateOfResult) AS MaxDateOfResult from @TestResults t
GROUP BY t.TestId ) groupedTests ON groupedTests.TestId = t2.TestId AND groupedTests.MaxDateOfResult = t2.DateOfResult
ORDER BY t2.TestId