2011-10-21 146 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 ..我的意思插入从源表到目标表只新记录,那么你可以做左外连接和数据插入到目标。不这么认为,也许我的问题是不清楚(应该补充一些伪记录) - 如果你的要求是不同的