首页 > 解决方案 > SQL 查询以获取具有成功状态的记录

问题描述

我在下面有一张桌子。每天将运行 3 个不同的文件,并且状态将作为成功/失败插入到表中。我需要所有 3 个状态为成功的文件并获取该日期。这里根据下表 SQL 查询必须返回 Date 2020-02-25 (因为上面的所有 3 个文件都是成功的)

请帮助我查询,我尝试了很多查询但无法获得所需的结果。

ID  Pipeline_name   Status      UpdatedDate
1   Student_Dump    SUCCESS     2020-02-27
2   Teacher_Dump    SUCCESS     2020-02-27
3   Subjects_Dump   Failed      2020-02-27  
4   Student_Dump    SUCCESS     2020-02-26
5   Teacher_Dump    Failed      2020-02-26
6   Subjects_Dump   SUCCESS     2020-02-26  
7   Student_Dump    SUCCESS     2020-02-25
8   Teacher_Dump    SUCCESS     2020-02-25
9   Subjects_Dump   SUCCESS     2020-02-25  

标签: sqlsql-server

解决方案


试试这个:

WITH cteStatus AS(
  SELECT UpdatedDate, Status, ROW_NUMBER() OVER (PARTITION BY UpdatedDate, Status ORDER BY UpdatedDate, Status) rn
    FROM T1
 )
SELECT c.UpdatedDate
  FROM cteStatus c
  WHERE Status = N'SUCCESS'
    AND rn = 3

这个想法是获取所有日期,其中每个日期有三个状态为成功的记录。

这里是小提琴的链接:http ://sqlfiddle.com/#!18/a25c2b/5/1


推荐阅读