有人可以在查询中提供建议,以获取每个期间新条目和已删除条目的总和吗?
我有一个表,其中包含这样的历史数据(在GUID + Date上使用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
感谢您的建议和帮助。
答案 0 :(得分:0)
如果我的理解正确,您想比较每个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;