这是我的结果集
我使用refid
在WHERE refid IN
的基础上返回此结果集。
在这里,我需要在没有任何编程的情况下应用逻辑(仅指SQL查询)。
如果在结果集中,我为特定period
获取refid
,则不得返回具有相同refid
的其他行。
例如,2667105必须不在结果集中返回period
,然后myid
= 612084598。
根据我这可以使用CASE实现,但我不知道如何使用它,我的意思是我不知道我应该使用CASE
语句中的SELECT
语句或{{ 1}}子句......
编辑:
这就是假设工作的方式,
WHERE
= 612084598是myid
= 2667105的默认行,但如果特别想要refid
= refid
= 6那么它必须返回除{{1}之外的所有行}} = 612084598
但如果我正在寻找period
= 12,那么这个myid
数据库中没有特定的period
..所以为此,它必须返回除第一个之外的所有行。 period
的所有行,默认为一行..
答案 0 :(得分:2)
问题的定义不是很清楚,但试试这个:
with cte as (
select
*,
first_value(period) over(partition by refid order by myid) as fv
from test
)
select
myid, refid, period
from cte
where period is not null or fv is null