簡體   English   中英

如何計算Oracle SQL中的更改

[英]How to calculate changes in Oracle sql

我有帶有以下各列的下表:

HID_1 HID_2 Attr1 Attr2 Attr3 Attr4  Attr5    
123   111    wo     e    ak    ERR   20180630    
123   111    wo     e    ak    ERR   20180730     
123   111    wo     e    ak    ERR   20180830     
123   111    qe     e    ak    ERR   20180930    
123   111    qe     e    ak    ERR   20181030    
123   111    aa     a    ak    ERR   20181130

其中HID_1和HID_2是哈希ID廣告,另外4列由group by語句定義,最后一個是time_id(每月的最后一天的日期)。 總的來說,在此表中,我有許多具有許多不同HID的記錄。

我想將HID_2的許多更改(在Attr1-Attr4中)作為單獨的列。 根據第一個示例,答案應該是這樣的:

HID_1 HID_2 Attr1 Attr2 Attr3 Attr4  Attr5     Attr6    
123   111    wo     e    ak    ERR   20180630   0    
123   111    wo     e    ak    ERR   20180730   0    
123   111    wo     e    ak    ERR   20180830   0    
123   111    qe     e    ak    ERR   20180930   1     
123   111    qe     e    ak    ERR   20181030   0    
123   111    aa     a    ak    ERR   20181130   2

如何在Oracle sql數據庫中執行操作?

嘗試這個:

select t.* 
, case when attr1 != LAG(attr1, 1, attr1) OVER (PARTITION BY hid_1, hid_2 ORDER BY attr5) then 1 else 0 end +
  case when attr2 != LAG(attr2, 1, attr2) OVER (PARTITION BY hid_1, hid_2 ORDER BY attr5) then 1 else 0 end +
  case when attr3 != LAG(attr3, 1, attr3) OVER (PARTITION BY hid_1, hid_2 ORDER BY attr5) then 1 else 0 end +
  case when attr4 != LAG(attr4, 1, attr4) OVER (PARTITION BY hid_1, hid_2 ORDER BY attr5) then 1 else 0 end as attr6
from t

我想你要:

select t.*,
       dense_rank() over (partition by hid_1, hid_2 order by min_attr5) as attr6
from (select t.*,
             min(attr5) over (partition by hid_1, hid_2, , attr1, attr2, attr3, attr4, seqnum_2 - seqnum) as min_attr5
      from (select t.*,
                   row_number() over (partition by hid_1, hid_2 order by attr5) as seqnum,
                   row_number() over (partition by hid_1, hid_2, attr1, attr2, attr3, attr4 order by attr5) as seqnum_2
            from t
      ) t;

暫無
暫無

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

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