2016-05-17 7 views
0

私のプロジェクトにはSQL Serverを使用しており、マイページにいくつかの指標を表示しています。 私のメトリクスの1つはTCの実行回数ですが、TC Executedの重複エントリも表示されます。最新の実行済みTCを重複なしで取得する方法

最近TCの実行リストを重複なしで得る方法はありますか?

マイSQL Serverのクエリは次のとおりです。以下の出力表示に失敗し、同じtc_idのためのリストを渡すの両方で

SELECT 
    a.tc_id tc_id, 
    a.status STATUS, 
    MAX(a.exn_time) exn_Time, 
    'auto' tctype 
FROM 
    auto_details a WITH (NOLOCK) 
WHERE 
    a.status IN ('Pass', 'Fail') 
    AND project = 'proj2' 
GROUP BY 
    a.tc_id, a.status 

。しかし、私は別個に実行されたリスト(exn_Timeは最後に更新されたリストを持つ)のみを必要とします。

enter image description here

+0

サンプルデータと予想される出力を提供してください。私はその質問を理解していない。 – sagi

+0

重複したエントリが表示されません...他の人が失敗したときに1つが合格しました –

+0

が最新のレコードのみを入力します – user3114967

答えて

0
Create Table Auto_Details (tc_id varchar(8000), Status varchar(8000), exn_Time datetime, project varchar(8000)) 
Insert Auto_Details Values ('TC_001', 'PASS', '2016-05-16 15:47:27.580', 'proj2') 
Insert Auto_Details Values ('TC_001', 'FAIL', '2016-05-16 15:52:14.787', 'proj2') 
Insert Auto_Details Values ('TC_002', 'FAIL', '2016-05-16 15:47:27.580', 'proj2') 
Insert Auto_Details Values ('TC_002', 'PASS', '2016-05-16 12:43:27.580', 'proj2') 

With cteMetrics As 
(
Select tc_id, exn_time, Status, 
     Row_Number() Over (Partition By tc_id Order By exn_Time Desc) Sort 
    From Auto_Details with(NOLOCK) 
    Where status IN ('Pass', 'Fail') 
     AND project = 'proj2' 
) 
Select * 
    From cteMetrics 
    Where Sort = 1 
0

私が何をしたいことより、このようなものであると思われる。また

;WITH cte 
(
    SELECT *, 
      ROW_NUMBER() OVER(PARTITION BY tc_id ORDER BY exn_time DESC) AS exn_no 
    FROM auto_details 
    WHERE a.status IN ('Pass', 'Fail') 
     AND project = 'proj2' 
) 
SELECT a.tc_id  tc_id, 
     a.status  STATUS, 
     a.exn_time exn_Time, 
     'auto'  tctype 
    FROM cte a 
WHERE exn_no = 1 

は、FYI、nolockは特にグループ化に、本質的に信頼できないと一貫性のない過渡値になることができます/パーティションクエリ。

関連する問題