根据与另一行的比较从数据中选择特定日期



我有一个PO的以下数据行。在这种情况下,我需要选择项目进入检查的日期,并将其与今天进行比较。强调的日期来自图像。我知道这是我需要的日期,因为按日期排序时,前一行在inspection 'Insp'中显示为零。这是零件被送去检查的最近日期。谁能写一个sql,选择最近的检查日期,并将其与今天进行比较,以显示部件已经检查了多少天?

ID  PO  Line    Rec Insp    Rej Transaction_Date
7616    263309  1   0   48  0   9/23/21 7:47 AM
7931    263309  1   0   0   48  10/12/21 7:36 AM
**13643 263309  1   0   42  48  9/21/22 9:39 AM**
13818   263309  1   0   42  0   9/28/22 4:27 PM
13819   263309  1   0   42  48  9/28/22 4:27 PM
13953   263309  1   0   42  0   10/4/22 7:55 AM
13955   263309  1   0   42  42  10/4/22 8:03 AM
13956   263309  1   0   42  0   10/4/22 8:04 AM
14011   263309  1   0   42  0   10/4/22 12:31 PM
14012   263309  1   0   42  0   10/4/22 12:31 PM

我已经拉出了最小日期,在大多数情况下,这是我需要的日期,但如果零件已经移出并返回检查,则不起作用。

我理解您正在寻找每个PO的最新检验条目,其中检验条目是紧跟Insp0的行。

我们可以使用lag来检索&;last&;;Insp的值,并使用该值对检验条目进行过滤;然后,row_number()可以用来过滤每个po的最新行。

select *
from (
    select t.*,
        row_number() over(partition by po order by transaction_date desc) rn
    from (
        select t.*,
            lag(insp) over(partition by po order by transaction_date desc) lag_insp
        from mytable t
    ) t
    where lag_insp = 0
) t
where rn = 1

相关内容

  • 没有找到相关文章

最新更新