簡體   English   中英

SQL最大和最小日期與過濾器

[英]SQL max and min dates with filter

以下帳戶於2018年1月19日關閉,然后於2018年2月27日重新開放,然后於2018年3月26日再次關閉。 我如何編寫SQL來捕獲打開和關閉此帳戶的時間。 closerestrictind ='C'是關閉帳戶的時間。

我們正在一個數據倉庫中工作,每天都會加載數據以捕獲所有歷史記錄。

對於acct 1234應該看起來像這樣:

closed on 1/19/2018
re-opened on 2/27/2018
closed on 3/26/2018

在此處輸入圖片說明

謝謝!

您可以使用lag()

select acctnbr, effectivedate,
       (case when closerestrictedind = 'C' then 'closed' else 'opened' end) as action
from (select t.*, lag(closerestrictedind) over (partition by acctnbr order by effectivedate) as prev_cr
      from t
     ) t
where prev_cr <> closerestrictedind;

您可以執行兩個選擇語句,第一個選擇按acctnbr進行row_number()分區,按日期排序...將其保存在tmp表中

第二個選擇,內部將此表與自身t1和t2連接起來。

其中t1.closerestrictedind ='C'

和連接,其中t1.rownum> t2.rownum +1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM