Sql Netezza LAST_值过滤器
我正在尝试创建一个NETEZZA表,该表只包含特定键的最新记录-例如,想象一个表(MYTABLE),如下所示:Sql Netezza LAST_值过滤器,sql,database-partitioning,netezza,Sql,Database Partitioning,Netezza,我正在尝试创建一个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 我想返回如下表格: Col1 Col2 TIMESTAMP xxxx xxxx 13:45 xxxx xxxx 13:46 xxxx yyyy
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
我想返回如下表格:
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分区内的timestamp的最后一个值过滤表)明白了-终于!罗维德用词不当。向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)
下面的查询应该可以正常工作 创建表时间戳\u数据\u最新 作为 选择Col1、Col2、MAX(Timestamp\u val)作为最新的\u时间戳 从时间戳数据 按Col1、Col2分组 问候,,
如果您正在尝试实施SCD2,请使用Venk。。我的意思是只从源表向目标表插入新记录,然后可以执行左外部联接并将数据插入目标表。
如果您的要求不同,请纠正我hmmm-不要这样认为,也许我的问题不清楚(应该添加一些虚拟记录)。我希望创建一个表,该表只包含特定键的最新记录。。(我在示例中只显示了键和时间戳)。