我有一个表格,其中的数据如下:
从该表中我想得到如下输出:
实际要求是将Entity
显示为IsDefault
和IsOwner
为“Y”
。
如果没有符合该条件的数据,则下一个条件是选择 Entity
,其中 IsDefault
为 “Y”
。
如果不是,则选择 Entity
,其中 IsOwner
为 “Y”
。
如果没有值为“Y”
的实体
,则不会显示该实体
。
每个实体
至少显示一次。
我尝试使用以下查询:
SELECT ENTITY_ID,IS_DEFAULT,IS_OWNER FROM #TEMP_CHART WHERE (IS_DEFAULT='Y' OR IS_OWNER ='Y')
但显示相同的实体
两次,如下所示:
是否有任何选择查询来获取以上输出
最佳答案
您可以使用rank()
窗口函数来获取需要的数据:
select *
from (
select t.*,
rank() over (
partition by entity order by isDefault desc,
IsOwner desc
) rn
from your_table t
where isDefault = 'Y'
or IsOwner = 'Y'
) t
where rn = 1
窗口函数中的排序在这里非常重要。
Demo
关于SQL:带条件的选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42687896/