此语句返回2行:获取多行
SELECT ts.UnitId,ts.TeststepId, MAX(ts.CreatedAt)as CreatedAt
FROM Teststep ts
INNER JOIN Unit u ON ts.UnitId = u.UnitId
Where u.TemplateId = 2
Group by TeststepId, ts.UnitId
我怎样才能获得一个行最高CreatedAt
日期?我应该区分unitId
?
UPDATE
亚伦和flem aksed更多信息:
1 Template has N Units
1 Unit has N Teststeps
的一步步测试表的聚集主键是TeststepId和CreatedAt。
[TeststepId] [int] NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[PreCondition] [nvarchar](500) NOT NULL,
[TestInstruction] [nvarchar](500) NOT NULL,
[ExpectedResult] [nvarchar](500) NOT NULL,
[CreatedAt] [datetime] NOT NULL,
[CreatedBy] [nvarchar](50) NOT NULL,
[UnitId] [int] NOT NULL,
与在一步步测试表中的最重要领域的一步步测试表
样本数据可能是:
的一步步测试表明历史化teststeps。从上面的图片可以看出TeststepId = 4存在2次。历史版本(58秒)和当前版本(59秒)。
我想只用59秒的时间才能在“当前”视图中显示teststepid 4。
更新2
我想只有teststepid 4 59秒 所有其他teststepId s with their current date. If there are only rows with different teststepid
。就拿那些,因为它们是当前行。
我正要改变我的集成测试并找到解决方案。
你可以扩展你实际想要实现的目标吗?例如当有多个单位时会发生什么? – 2012-07-18 16:07:53
同意@flem - 你想要“一排”,还是你想要一排*** PER UNITID ***?你能否指定我们知道我们正在回答的问题,还可以指定SQL Server的版本? – 2012-07-18 16:11:40
@Aaron我更新了我的问题。你的解决方案都可以工作,问题是哪一个更快。通常不会存在超过20个具有相同标识但日期不同的测试步骤。所以我猜orderby子句比CTE快。 – Elisabeth 2012-07-18 17:49:47