我试图创建一个只包含特定键的最新记录的NETEZZA表 - 例如想象一个表(MYTABLE),如下所示:
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 :(得分:0)
得到它 - 终于! rowid是用词不当。 Credit向Netezza社区的Shawn Fox寻求灵感。
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)
答案 1 :(得分:0)
以下查询应该可以正常工作。
CREATE TABLE TIMESTAMP_DATA_LATEST 如 SELECT Col1,Col2,MAX(Timestamp_val)AS Latest_TimeStamp 来自TIMESTAMP_DATA GROUP BY Col1,Col2;
此致 Venk
答案 2 :(得分:0)
如果您正在尝试实现SCD2 ..我的意思是从源表中仅将新记录插入目标表,然后您可以执行左外连接并将数据插入目标。 如果你的要求不同,请纠正我