在以下数据集中,我尝试删除具有 NULL LocName 的 ES Hou 实体。我想保留其他三个记录。我一直在尝试使用 row_number() 函数来执行此操作,但我不知道如何获取非空值以获得比空值更高的排名。有什么建议吗?
PracticeId LastName EntityId LocId EntityName LocName PracName
53681 Thomas 3194 2222 ECS Tampa NULL NULL
53681 Thomas 3195 2222 ECS Atlanta NULL NULL
53681 Thomas 3222 2222 ES Hou NULL NULL
53681 Thomas 3222 2434 ES Hou ECS Hou Regional Med
最佳答案
在Row_Number
窗口函数中,LocName
按降序排列,NULL
值将排在最后
Select * from
(
select Row_Number()over(Partition by EntityName Order by LocName desc) Rn, *
From yourtable
) A
Where Rn = 1
注意:如果EntityName
有多个NOT NULL LocName
,那么它只会带来一条记录
关于sql - 需要窗口函数来对空值和非空值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42420358/