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

问题描述 投票:0回答:1

有人可以建议查询以获取每个期间的新条目和已删除条目的总和吗?

我有一个表,其中包含这样的历史数据(在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 

感谢您的任何建议和帮助。

sql sql-server view
1个回答
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;
© www.soinside.com 2019 - 2024. All rights reserved.