このステートメントは 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
最高の日付を持つ1行を取得するにはどうすればよいですか? を区別する必要がありunitId
ますか?
アップデート
詳細については、Aaron と flem に問い合わせてください。
1 Template has N Units
1 Unit has N Teststeps
Teststep テーブルのクラスター化された主キーは、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,
テストステップテーブル
Teststep テーブルで最も重要なフィールドを含むサンプル データは次のようになります。
テストステップには、履歴化されたテストステップが表示されます。上の画像から、TeststepId = 4 が 2 回存在することがわかります。過去のバージョン (58 秒) と現在のバージョン (59 秒)。
「現在の」ビューに表示するために、59 秒の teststepid 4 のみを取得したいと考えています。
更新 2
59 秒の teststepid 4 のみを取得したいのですが、他のすべての teststepIds with their current date. If there are only rows with different teststepid
は現在の行であるため、それらを取得します。
統合テストを変更して、解決策を見つけようとしています。