繁体   English   中英

如何在teradata的日表中的每一行中获取当前月份的第一天值和上个月的最后一天值?

[英]How to get current month's 1st day value and last month's last day value in every row in a daily table in teradata?

我有下表

日期 地区 关键绩效指标键 关键绩效指标值
2021 年 1 月 31 日 区域1 1001 1234
2021 年 1 月 31 日 区域2 1001 5678
2021 年 1 月 31 日 区域1 1002 9100
2021 年 1 月 31 日 区域2 1002 1112
2021 年 1 月 2 日 区域1 1001 1314
2021 年 1 月 2 日 区域2 1001 1516
2021 年 1 月 2 日 区域1 1002 1718
2021 年 1 月 2 日 区域2 1002 1920
2021 年 2 月 2 日 区域1 1001 2122
2021 年 2 月 2 日 区域2 1001 2324
2021 年 2 月 2 日 区域1 1002 2526
2021 年 2 月 2 日 区域2 1002 2728

我想要这样的 output 表:

日期 地区 关键绩效指标键 关键绩效指标值 KPI 值 LM LD KPI 值 CM FD
2021 年 1 月 31 日 区域1 1001 1234
2021 年 1 月 31 日 区域2 1001 5678
2021 年 1 月 31 日 区域1 1002 9100
2021 年 1 月 31 日 区域2 1002 1112
2021 年 1 月 2 日 区域1 1001 1314 1234 1314
2021 年 1 月 2 日 区域2 1001 1516 5678 1516
2021 年 1 月 2 日 区域1 1002 1718 9100 1718
2021 年 1 月 2 日 区域2 1002 1920 1112 1920
2021 年 2 月 2 日 区域1 1001 2122 1234 1314
2021 年 2 月 2 日 区域2 1001 2324 5678 1516
2021 年 2 月 2 日 区域1 1002 2526 9100 1718
2021 年 2 月 2 日 区域2 1002 2728 1112 1920

我使用下面的 first_value window function 来获取当月的第一天值(KPI_VALUE_CM_FD),但很难获得上个月的最后一天的值(KPI_VALUE_LM_LD)。

 select a.*, first_value(kpi_value) over(partition by date,region,kpi_key order by date) 
    kpi_value_CM_FD
    from table1
   

请帮我获取每行中每个区域的每个 KPI 键的上个月最后一天值

first_value与您的描述不匹配, partition by date不返回当前月份的第一天值,您需要partition by last_day(dt) 关于上个月:

这应该符合您的预期结果:

with cte as
 (
   select a.*, 
      -- current month's first day value
      first_value(kpi_value) 
      over(partition by last_day(dt),region,kpi_key
           order by dt) as kpi_value_CM_FD
      -- last day of previous month
     ,max(dt)
      over(partition by last_day(dt),region,kpi_key) as max_dt
   from vt as a
  )
select cte.*
   -- previous month last day value
  ,lag(case when dt = max_dt then kpi_value end ignore nulls)
       over (partition by region,kpi_key
             order by dt) as kpi_value_LM_FD
from cte

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM