此語句返回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