Postgresql 从postgres中的结果集中排除行
这是我的结果集 我在Postgresql 从postgres中的结果集中排除行,postgresql,join,left-join,Postgresql,Join,Left Join,这是我的结果集 我在refid的基础上使用WHERE refid IN返回此结果集。 在这里,我需要应用一个没有任何编程的逻辑(仅指SQL查询) 如果在结果集中,我得到特定refid的period,则不能返回具有相同refid的其他行 例如,如果2667105的期间然后myid=612084598,则不能在结果集中返回 我认为这可以通过使用CASE实现,但我不知道如何使用它,我的意思是我不知道应该在SELECT语句或WHERE子句中使用CASE语句 编辑: 这就是它的工作原理 myid=61
refid
的基础上使用WHERE refid IN
返回此结果集。
在这里,我需要应用一个没有任何编程的逻辑(仅指SQL查询)
如果在结果集中,我得到特定refid
的period
,则不能返回具有相同refid
的其他行
例如,如果2667105的期间
然后myid
=612084598,则不能在结果集中返回
我认为这可以通过使用CASE实现,但我不知道如何使用它,我的意思是我不知道应该在SELECT
语句或WHERE
子句中使用CASE
语句
编辑: 这就是它的工作原理
myid
=612084598是refid
=2667105的默认行,但如果特别希望refid
用于period
=6,则它必须返回除myid
=612084598之外的所有行
但如果我要查找
期间
=12,则对于此期间
数据库中没有特定的refid
。。因此,它必须返回除第一行以外的所有行。。表示所有带有refid
的行,这是默认行。问题定义不太清楚,但请尝试以下操作:
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
@KuKu仍然不太清楚,请为您的测试用例提供默认输入