我有一個 PO 的以下資料行。在這種情況下,我需要選擇物品進入檢查的日期并將其與今天進行比較。影像中強調的日期。我知道這是我需要的日期,因為在按日期排序時,前一行在檢查“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
我已經取消了最短日期,在大多數情況下是我需要的日期,但如果零件已移出并重新進行檢查,則該日期不起作用。
uj5u.com熱心網友回復:
我了解到您正在為每個采購訂單尋找最新的檢查條目,其中檢查條目是緊跟在帶有0in的行之后的行Insp。
我們可以使用它lag來檢索“最后一個”值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
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/532284.html
標籤:sql日期窗函数
上一篇:包含數字但不包括日期中數字的正則運算式(xx/xx/xx)
下一篇:將下拉串列字串值轉換為日期
