[英]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.