这个cte中的数据如下所示:
h_pit as (
select
*
from "h_pit"
)
id hash_key1. hash_key2 business_key date value
1 12233 234 123 12-01-2000 5
3 33333 456 091 13-01-2000 6
7 FFFFFF 456 NULL 16-01-2000 7
9 FFFFFF 888 NULL 6-01-2000 7
hash_key2 有一些重复项。对于每个重复的 hash_key2,
hash_key1 = FFFFFF
和 business_key is NULL
。
我想在此之后创建一个新的 cte,丢弃 hash_key2 重复项,其中 hash_key 1 = FFFFF 且business_key 为 NULL,并且 hash_key 2 重复。我怎样才能实现这个目标?
这就是我首先收集有关重复 hash_key2 的信息的方式:
SELECT h_application_2
FROM h_pit
GROUP BY h_application_2
HAVING COUNT(*) > 1
请注意,在某些情况下
hash_key1 = FFFFFF
和 business_key is NULL
但是 hash_key2 不是重复的,所以我不想删除它们
参见示例
select t1.*
from h_pit t1
left join h_pit t2 on t1.hash_key2=t2.hash_key2
and t1.hash_key1='FFFFFF' and t1.business_key is null
and t2.hash_key1<>'FFFFFF' and t2.business_key is not null
where t2.id is null
在过滤器之前加入结果(WHERE)
id | hash_key1 | hash_key2 | business_key | 日期 | 价值 | id | hash_key1 | hash_key2 | 业务_密钥 | 日期 | 价值 |
---|---|---|---|---|---|---|---|---|---|---|---|
1 | 12233 | 234 | 123 | 2000-01-12 | 5 | 空 | 空 | 空 | 空 | 空 | 空 |
3 | 33333 | 456 | 091 | 2000-01-13 | 6 | 空 | 空 | 空 | 空 | 空 | 空 |
7 | FFFFFF | 456 | 空 | 2000-01-16 | 7 | 3 | 33333 | 456 | 091 | 2000-01-13 | 6 |
9 | FFFFFF | 888 | 空 | 2000-01-06 | 7 | 空 | 空 | 空 | 空 | 空 |