查询历史数据-新增/删除条目



有人能就查询提供建议,以获得每个期间的新条目和已删除条目的总和吗?

我有一个表,包含这样的历史数据(具有GUID+日期的PKI(表1

GUID       Date          Category
----------------------------------
00001   2020-04-01         A  
00002   2020-04-01         B
00003   2020-04-01         C
00001   2020-04-02         A
00002   2020-04-02         B
00003   2020-04-02         C
00004   2020-04-02         A
00001   2020-04-03         A
00002   2020-04-03         B
00003   2020-04-03         C
00004   2020-04-03         A
00007   2020-04-03         A
00005   2020-04-03         B
00001   2020-04-04         A
00002   2020-04-04         B
00004   2020-04-04         A
00007   2020-04-04         A
00005   2020-04-04         B

因此,我需要获得添加和删除期间(每月的最小日期(的guid的总和。

在这个例子中,它将是

表2

Status    Period        Category  Amount
----------------------------------------
New     2020-04-01        A        2
New     2020-04-01        B        1
Removed   2020-04-01        C        1 

谢谢你的建议和帮助。

如果我理解正确,您需要比较每个guid的第一次和最后一次出现。我想这个月这个类别不会改变。

如果这是正确的,您可以使用聚合:

select (case when max_date < data_max_date then 'removed'
when min_date > data_min_date then 'new'
end) as status,
category, count(*)
from (select guid, category, min(date) as min_date, max(date) as max_date,
min(min(date)) over () as data_min_date,
max(max(date)) over () as data_max_date
from t
group by guid, category
) gc
where min_date <> data_min_date or max_date <> data_max_date
group by category;

最新更新