2011-10-21 202 views
0

想創建它只有最近的記錄特定鍵NETEZZA表 - 例如,想象一個表(MYTABLE)如下:Netezza公司LAST_VALUE過濾

Col1 Col2 TIMESTAMP 
xxxx xxxx 13:45 
xxxx xxxx 13:46 
xxxx yyyy 10:00 

我想返回一個表作爲如下:

Col1 Col2 TIMESTAMP 
xxxx xxxx 13:46 
xxxx yyyy 10:00 

我猜我需要的線沿線的一些代碼:

Create table MYNEWTABLE as 
    select * 
    from MYTABLE 
    WHERE rowid in 
    (
    SELECT LAST_VALUE(rowid) 
    OVER (PARTITION BY COL1, COL2 
      ORDER BY TIMESTAMP) 
      FROM MYTABLE 
    ) 
    ORDER BY COL1,COL2 
    distribute on (COL1) 

但是日是不是真的工作,任何人都可以請指教? (具體如何通過時間戳的最後一個值COL1中篩選表/ COL2分區)

回答

0

明白了 - 終於來了! rowid是一個用詞不當的人。 Credit Netezza公司社區肖恩·福克斯尋找靈感。

Create table MYNEWTABLE as select * from 
    (select * 
      ,row_number() over (
       partition by COL1, COL2 order by TIMESTAMP desc 
           ) row 
     from MYTABLE 
    ) x 
    WHERE x.row=1 
    distribute on (COL1) 
0

下面的查詢應該可以正常工作。

CREATE TABLE TIMESTAMP_DATA_LATEST AS SELECT Col1中,Col2中,MAX(Timestamp_val)AS Latest_TimeStamp FROM TIMESTAMP_DATA GROUP BY Col1中,Col2中;

問候, Venk

+0

嗯 指正。在找創建只具有特定鍵最近的記錄表。(我只是表現的關鍵,並在例如時間戳)。 –

+0

你能發佈一些樣本記錄,如果你可以...威爾嘗試改善我的答案.. – Teja

0

,如果你想實現SCD2 ..我的意思插入從源表到目標表只新記錄,那麼你可以做左外連接和數據插入到目標。不這麼認爲,也許我的問題是不清楚(應該補充一些僞記錄) - 如果你的要求是不同的