如何获取Snowflake中每行最新的Timestamp_NTZ



平台:Snowflake

我正在构建一个需要最新部门信息的报告。一些部门已经更新,并采用新的时间戳日期,显示他们是最新的。我只涉足SQL一年,到目前为止,我用大多数其他查询来自动化仪表板都运行得很好,但是这个查询甚至在谷歌等之后也难倒了我。

我试着写这个:

select MAX(EFFDT), DEPTID, EFF_STATUS, DESCR
from "DATA_LAKE"."PS_FS"."PS_DEPT_TBL";

我得到这个错误:

SQL compilation error: [PS_DEPT_TBL.DEPTID] is not a valid group by expression 

也许需要分区?如果是,我该如何构建它?

的例子:

Row   Dept     EFFDT            
Row 1 DEPT78   1990-01-01 00:00:00.0000
Row 2 DEPT78   1990-01-02 00:00:00.0000   <  I want this record/row to populate and not row 1 above.
Row 3 DEPT79   1990-01-01 00:00:00.0000
Row 4 DEPT79   1990-01-02 00:00:00.0000   <  I want this record/row to populate and not row 3 above.

感谢您的帮助。

我试着研究不同的方法来获取最新的数据,但失败了,因为我相信我需要一个更密集的查询来获得想要的结果。

示例数据与SQL不一致,但似乎可以按除EFFDT以外的列进行分组:

select MAX(EFFDT), DEPTID, EFF_STATUS, DESCR
from "DATA_LAKE"."PS_FS"."PS_DEPT_TBL"
group by DEPTID, EFF_STATUS, DESCR
;

如果这不起作用,那是因为它对太多的列进行了分组。如果你只需要按"深度"分组例如,但需要其他列:

select MAX(EFFDT), DEPTID, max(EFF_STATUS) as EFF_STATUS, max(DESCR) as DESCR
from "DATA_LAKE"."PS_FS"."PS_DEPT_TBL"
group by DEPTID
;

有人可能会问,当最大值没有显著性并且有any_value函数可以得到相同的结果时,为什么要使用max。原因是any_value当前被标记为不能使用结果集缓存。如果查询符合条件,使用max或min将允许使用结果集缓存。

相关内容

  • 没有找到相关文章

最新更新