SQL 代码 如何在历史表中进行迭代



我需要SQL方面的帮助

我有一个名为 A 的历史表。它具有月份ID,srvc密钥等。

我需要检查保管密钥是否是该表 A 中的新客户。逻辑是 - 查看该 cust 键对于当前月份 ID 是否是新的,并且不存在前几个月(小于当前月份 ID)。

为了说明,

我的当前月份 ID = 2022 年 2 月 cust 密钥必须存在于 2022 年 2 月,但不能存在于 2022 年 1 月、2021 年 12 月,..,依此类推。

另外,是否可以标记 cust 密钥是否存在于 2022 年 2 月和 2022 年 1 月,但不存在于 2021 年 12 月,依此类推。

select A.*,B.level_1, B.level_2, B.level_3, B.LE,
case when cust_key in ('2100707688',
'1xxx4',
'1xxxx',
'28xxxx1',
'2xxxxxx',
) then 'New' else 'Old' end as Tag,
A.NET_AMT/(nullif(A.prod_cnt,0)*B.LE) as ARPU

嗨@NickW,

感谢您的回复,我需要的是下面的示例历史表中的它,我需要标记本月(202202)的新CNumber。他们 是新的,因为 CNumber2 没有出现在 202201,202112,20211 中。我不在乎它是否出现在 202110 或更少。我只关心没有出现的 CNumber 最近 3 个月。

C编号月份ID 1 202202 1 202201 1 202112 1 202111 2 202202 2 202105 2 202104 2 202103 2 202102 2 202101 3 202202 3 202201 3 202112 3 202111 3 202110 3 202109

根据此示例,只有 CNumber 2 满足此规则,因为它出现在202202上,但不出现在202201 202112 202111中。

接下来,我还想标记 CNumber 谁是 2022 年 1 月的新人。

在本例中,当前月份 ID = 202201。现在,CNumber不应该出现在202112,20211,202110中,以便能够说它是新的。

接下来,还想标记 2022 年 12 月的新人 CNumber。现在,CNumber不应该出现在20211,202110,202109中,以便能够判断它们是新的。

等等..

我的目标是通过月份 ID 标记客户首次出现在历史表中的时间。我假设那是他们的预订日期。因此,在表格中,我的目标是查看名为预订日期的列。

我们可以使用 cte 来获取帐户第一个条目的月份。有了它,我们可以根据需要进行比较和计算。

create table sales(
cnumber int,
salesDate date);
insert into sales values
(1,'2021-11-15'),
(1,'2021-12-15'),
(1,'2022-01-15'),
(1,'2022-02-15'),
(2,'2022-02-15');
with cre as (
select
cnumber cnum,
DATE_FORMAT(min(salesDate),
'%Y-%m-01') monCre
from sales
group by 
cnumber),
salesMonth as(
select
DATE_FORMAT(salesDate, 
'%Y-%m-01') as mon,
cnumber cust
from sales
group by 
cnumber,
mon)
select
cust customer,
mon "month",
case when mon = monCre
then 'new' else 'existing' end
as "status",
TIMESTAMPDIFF(MONTH,monCre ,mon)
as "account Age"
from salesMonth
join cre on cust = cnum
order by cust, mon;
客户 | 月 | 状态 | 帐户年龄 -------: |:--------- |:------- |----------:  1 |2021-11-01 |新品 |          0  1 |2021-12-01 |现有 |          1  1 |2022-01-01 |现有 |          2  1 |2022-02-01 |现有 |          3  2 |2022-02-01 |新品 |          0

db<>小提琴在这里

最新更新