0

这是我的结果集

结果集

我在refidusing的基础上返回这个结果集WHERE refid IN。在这里,我需要在没有任何编程的情况下应用逻辑(仅表示 SQL 查询)。

如果在结果集中,我得到period了特别的结果,那么不能返回refid具有相同的其他行。refid

例如,具有periodthen myid= 612084598 的 2667105 不得在结果集中返回。

根据我的说法,这可以使用 CASE 来实现,但我不知道如何使用它,我的意思是我不知道我应该CASESELECT语句或WHERE子句中使用语句......


编辑:

这就是它假设的工作方式,

myid= 612084598 是 = 2667105 的默认行,refid但如果特别想要refidfor period= 6 那么它必须返回除myid= 612084598之外的所有行

但是如果我正在寻找period= 12,因为这个数据库中period没有特定refid的存在..所以为此它必须返回除第一行之外的所有行..意味着所有行refid都是默认行..

4

1 回答 1

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

sql fiddle demo

于 2013-08-26T10:51:09.010 回答