如何检索Sql中的单行
si.version\u编号有不同的版本。e、 g如何检索Sql中的单行,sql,oracle,Sql,Oracle,si.version\u编号有不同的版本。e、 g version_number=1 version_number=2 version_number=3 I need to retrieve the data having the maximum version number. 我知道我的疑问有些错误。有人能帮我吗? 谢谢 select si.point_id,si.ti_region_sur,si.phone_number,si.ti_service_instance_id,si.
version_number=1
version_number=2
version_number=3
I need to retrieve the data having the maximum version number.
我知道我的疑问有些错误。有人能帮我吗?
谢谢
select si.point_id,si.ti_region_sur,si.phone_number,si.ti_service_instance_id,si.version_number
from
ti_invoice_account ia, ti_product_agreement pa, ti_asset_agreement aa, ti_service_instance si
where
si.version_number=max(si.version_number) and
ia.ti_invoice_account_sur=pa.ti_invoice_account_sur and
pa.ti_product_agreement_sur=aa.ti_product_agreement_sur and
aa.ti_service_instance_id=si.ti_service_instance_id and
ia.ti_invoice_account_sur=4897;
在Oracle 12中,您可以使用
行编号()
窗口函数,如下所示:
with
x as (
select
si.point_id,
si.ti_region_sur,
si.phone_number,
si.ti_service_instance_id,
si.version_number,
row_number() over (partition by si.point_id, si.ti_region_sur,
si.phone_number, si.ti_service_instance_id
order by si.version_number desc) as rn
from ti_invoice_account ia
join ti_product_agreement pa on ia.ti_invoice_account_sur = pa.ti_invoice_account_sur
and ia.ti_invoice_account_sur=pa.ti_invoice_account_sur
join ti_asset_agreement aa on pa.ti_product_agreement_sur=aa.ti_product_agreement_sur
join ti_service_instance si on aa.ti_service_instance_id=si.ti_service_instance_id
where ia.ti_invoice_account_sur = 4897
)
select * from x where rn = 1
注意:我还将您的联接转换为现代联接符号。请使用21世纪联接符号。从SQL:1999到现在已经20年了。可能的重复max Row没有重复的可能谢谢。。但我忘了提到它是甲骨文11。行吗