【发布时间】:2020-10-02 20:00:18
【问题描述】:
我有以下查询,目前正在按预期工作。它将我的表连接到自身上,以识别状态发生变化的记录。
from
(select
ROW_NUMBER() OVER(order by OBJECTID, GDB_TO_DATE DESC) as R_NUM,
OBJECTID,
STATUS,
GDB_TO_DATE
from updm.pipes_h
) r1
join
(select
ROW_NUMBER() OVER(order by OBJECTID, GDB_TO_DATE DESC) as R_NUM,
OBJECTID,
STATUS,
GDB_TO_DATE
from updm.pipes_h
) r2 on r1.R_NUM = r2.R_NUM+1
where r1.objectid = r2.objectid
and r1.status != r2.status;
但是,我正在尝试添加额外的连接以获取来自另一个表的更多信息。我想把这个连接放在我的 r1 表中,如下所示:
select *
from
(select
ROW_NUMBER() OVER(order by p.OBJECTID, p.GDB_TO_DATE DESC) as R_NUM,
p.OBJECTID,
p.STATUS,
p.GDB_TO_DATE,
ps.PRESSURESYSTEMNAME
from updm.pipes_h p
join updm.pressuresystem ps ON p.PRESSURESYSTEM_GLOBALID = ps.globalid
) r1
join ...
问题是如果我这样做,查询返回不正确。我不确定这里出了什么问题,尽管我怀疑它是 r1 中的 ROW_NUMBER() 函数。我尝试使用 p.ROW_NUMBER() 但这也不是正确的语法。任何人都可以建议吗?我已经尝试查找 ROW_NUMBER() 的示例,但没有找到与连接一起使用的示例。
【问题讨论】:
-
您的
select子句在哪里?
标签: sql oracle join select window-functions