通过哪个 WHERE 子句项匹配来区分 Oracle SQL 结果集?
Differentiate Oracle SQL resultset by which WHERE clause item was matched?
我正在研究 11,500 项医疗保健索赔,我有以下查询:
select distinct b.claim_nbr, b.SERV_NBR, a.Member_Nbr, b.AFF_NBR, b.YMDEFF, b.ymdend, b.Location
From (select distinct member_nbr, aff_nbr, ymdeff, ymdend
From service_x
Where claim_nbr in (######)) a
join service_x b
on substr(a.aff_nbr,1,6) = substr(b.aff_nbr,1,6)
and a.member_nbr = b.member_nbr and (b.ymdeff between a.ymdeff and a.ymdend)
order by 2;
结果集将包含我的列表中的声明以及相关声明(与会员编号、附属编号和服务日期匹配的声明)的字段信息。我试图避免一次将列表中的声明插入到查询中,但我还需要一些方法来区分匹配 WHERE 声明的结果集。
我很想使用临时表来执行此操作,但我的权限是只读的,我的研究声明列表在该程序中不 SELECT-able,我目前正在请求 CREATE 权限否认。
我正在使用的程序 (Benthic's Golden) 能够在客户端导出到 Excel,所以如果我能让客户端循环运行(如果这可能的话),我可以将每个结果集放在单独的 Excel sheet 上,并以这种方式一次执行 40-50。否则,我想结果集必须是一个编译。如果可能的话,请教我一种区分结果集中不同记录的方法,方法是通过它们匹配的 where 子句项,通过使用允许我将每个单独声明的结果集导出到 Excel 的成功循环,或者通过许多声明的结果集将指示哪个声明在 where 子句中匹配。
非常感谢您考虑我的问题。
编辑:在 Politank-Z 的帮助下我的最终代码:
select distinct b.claim_nbr, b.SERV_NBR, a.Member_Nbr, b.AFF_NBR, b.YMDEFF, b.ymdend, b.Location, a.origclm
From (select distinct claim_nbr as origclm, member_nbr, aff_nbr, ymdeff, ymdend
From service_x
Where claim_nbr in (######)) a
join service_x b
on substr(a.aff_nbr,1,6) = substr(b.aff_nbr,1,6)
and a.member_nbr = b.member_nbr and (b.ymdeff between a.ymdeff and a.ymdend)
order by 8;
Export excel
你想要的信息只需要冒出来。将 claim_nbr
添加到内部查询的 SELECT
子句中,并将其包含在外部查询的 SELECT
子句中的别名下。
select distinct a.claim_nbr ref_claim, b.claim_nbr, b.SERV_NBR, a.Member_Nbr, b.AFF_NBR,
b.YMDEFF, b.ymdend, b.Location
From (select distinct member_nbr, aff_nbr, ymdeff, ymdend, claim_nbr
From service_x
Where claim_nbr in (######)) a
join service_x b
on substr(a.aff_nbr,1,6) = substr(b.aff_nbr,1,6)
and a.member_nbr = b.member_nbr and (b.ymdeff between a.ymdeff and a.ymdend)
order by 2;
我正在研究 11,500 项医疗保健索赔,我有以下查询:
select distinct b.claim_nbr, b.SERV_NBR, a.Member_Nbr, b.AFF_NBR, b.YMDEFF, b.ymdend, b.Location
From (select distinct member_nbr, aff_nbr, ymdeff, ymdend
From service_x
Where claim_nbr in (######)) a
join service_x b
on substr(a.aff_nbr,1,6) = substr(b.aff_nbr,1,6)
and a.member_nbr = b.member_nbr and (b.ymdeff between a.ymdeff and a.ymdend)
order by 2;
结果集将包含我的列表中的声明以及相关声明(与会员编号、附属编号和服务日期匹配的声明)的字段信息。我试图避免一次将列表中的声明插入到查询中,但我还需要一些方法来区分匹配 WHERE 声明的结果集。
我很想使用临时表来执行此操作,但我的权限是只读的,我的研究声明列表在该程序中不 SELECT-able,我目前正在请求 CREATE 权限否认。
我正在使用的程序 (Benthic's Golden) 能够在客户端导出到 Excel,所以如果我能让客户端循环运行(如果这可能的话),我可以将每个结果集放在单独的 Excel sheet 上,并以这种方式一次执行 40-50。否则,我想结果集必须是一个编译。如果可能的话,请教我一种区分结果集中不同记录的方法,方法是通过它们匹配的 where 子句项,通过使用允许我将每个单独声明的结果集导出到 Excel 的成功循环,或者通过许多声明的结果集将指示哪个声明在 where 子句中匹配。
非常感谢您考虑我的问题。
编辑:在 Politank-Z 的帮助下我的最终代码:
select distinct b.claim_nbr, b.SERV_NBR, a.Member_Nbr, b.AFF_NBR, b.YMDEFF, b.ymdend, b.Location, a.origclm
From (select distinct claim_nbr as origclm, member_nbr, aff_nbr, ymdeff, ymdend
From service_x
Where claim_nbr in (######)) a
join service_x b
on substr(a.aff_nbr,1,6) = substr(b.aff_nbr,1,6)
and a.member_nbr = b.member_nbr and (b.ymdeff between a.ymdeff and a.ymdend)
order by 8;
Export excel
你想要的信息只需要冒出来。将 claim_nbr
添加到内部查询的 SELECT
子句中,并将其包含在外部查询的 SELECT
子句中的别名下。
select distinct a.claim_nbr ref_claim, b.claim_nbr, b.SERV_NBR, a.Member_Nbr, b.AFF_NBR,
b.YMDEFF, b.ymdend, b.Location
From (select distinct member_nbr, aff_nbr, ymdeff, ymdend, claim_nbr
From service_x
Where claim_nbr in (######)) a
join service_x b
on substr(a.aff_nbr,1,6) = substr(b.aff_nbr,1,6)
and a.member_nbr = b.member_nbr and (b.ymdeff between a.ymdeff and a.ymdend)
order by 2;