从图片中可以看出。第 5 行和第 6 行在其他方面相同,但第 5 行具有“NULL”值。所以我想过滤掉第 5 行,但留下第 6 行。
然后还有单行具有“NULL”值,但我也想保留这些。那么我该怎么做呢?如何保留具有“NULL”值的单个/唯一行并同时过滤掉具有相同对应项但对应项具有“NULL”值的行?
我尝试使用 coalesce group by -function,但还没有得到想要的结果。
从图片中可以看出。第 5 行和第 6 行在其他方面相同,但第 5 行具有“NULL”值。所以我想过滤掉第 5 行,但留下第 6 行。
然后还有单行具有“NULL”值,但我也想保留这些。那么我该怎么做呢?如何保留具有“NULL”值的单个/唯一行并同时过滤掉具有相同对应项但对应项具有“NULL”值的行?
我尝试使用 coalesce group by -function,但还没有得到想要的结果。
您可以使用not exists
:
select t.*
from mytable t
where
date_updated is not null
or not exists (
select 1
from mytable t1
where
t1.state = t.state
and t1.foo = t.foo
and t1.date_created = t.date_created
and t1 date_created is not null
)
另一个选项是窗口函数,如果您的数据库支持它们:
select *
from (
select
t.*,
max(date_updated) over(partition by state, foo, date_created) max_date_updated
from mytable t
) t
where date_updated is not null or max_date_updated is null