【发布时间】:2015-09-10 19:16:43
【问题描述】:
我有以下代码查询两个数据库(相同的架构,绑定到相同的应用程序)。一个数据库保存服务信息,以及与服务相关的其他事务。选择在事务数据库中运行。 “文件/消息的数量”之前的输出是正确的,但是之后的选择返回一个独立的值并且不考虑主选择。什么是解决方法或正确方法来实现查询 3 的相同,因为它适用于主选择。我也包括了输出。谢谢。
select distinct tctc_cntipcli as "Type of contract" ,tctc_cncclipu as "Contract number", tctc_cndocidc as "Client name",
tsrv_cndesser as "Service name", tsrv_cncveser as "Service number", tsrs_cnsubsdc as "Subservice name", tsrs_cnsubser as "Subservice name", tmap_cndesc as "Map"
,
(select count(tlof_cnlofrid)
from service.kndtlof
where tlof_cncclipu = tctc_cncclipu
and tlof_cnservic = tsrv_cncveser
and tlof_cnsubser = tsrs_cnsubser
and tlof_cnfhalta > trunc (sysdate, 'mm')
) as "Volume of files/messages"
,
(select count(app_data_id)
from app_data ad, status ss, internal_transactions it, service.kndtexe ke, service.kndtctc kc, service.kndtsrv kv, service.kndtsrs ks
where ad.int_tran_id = ss.int_tran_id
and ss.int_tran_id = it.int_tran_id
and
(
(it.credit_acct = ke.texe_cnasupro)
or
(it.debit_acct = ke.texe_cnasupro)
)
and ke.texe_cncclipu = kc.tctc_cncclipu
and ke.texe_cnfuncid = kv.tsrv_cncveser
and ke.texe_cnsubser = ks.tsrs_cnsubser
and ad.entry_timestamp > trunc (sysdate, 'mm')
) as "Volume of Payments"
from service.kndtctc, service.kndtexe, service.kndtscm, service.kndtsrv, service.kndtsrs, service.kndtmap
where tctc_cncclipu = texe_cncclipu
and texe_cnfuncid = tsrv_cncveser
and texe_cnfuncid = tsrs_cncveser
and texe_cnsubser = tsrs_cnsubser
and texe_cncclipu = tscm_cncontra
and tscm_cnmapco = tmap_cnmapco
and tscm_cnservic = tsrv_cncveser
and tscm_cnsubser = tsrs_cnsubser
and tctc_cnestado in ('01', '03')
and texe_cnestado in ('01', '03')
and tscm_cnestado in ('01', '03')
and tsrv_cnestado in ('01', '03')
and tsrs_cnestado in ('01', '03')
and tmap_cnestado in ('01', '03')
order by tctc_cncclipu
;
还有输出:
Type of contract||Contract number||Client name||Service name||Service number||Subservice name||Subservice number||Map||Volume of files/messages||Volume of Payments
C 50008753 Change Name ACH 3085 ACH_IN1 I1 Sungard 820 ACH 31 16884
C 50008753 Change Name ACH 3085 ACH_IN4 I4 Sungard 820 ACH 0 16884
C 50008753 Change Name ACH 3085 ACH_OUT1 O1 827 NOC and Ret 1 16884
C 50008753 Change Name ACH 3085 ACH_OUT4 O4 827 NOC and Ret 0 16884
另外,我可以使用 max 函数使重复字段只在输出中出现一次吗?根据排序,这些最多可能是主选择中的前 5 个元素。 感谢您的宝贵时间!
【问题讨论】:
-
您的第二个问题不够清楚,我无法提供任何建议。预期输出与显示的当前输出有什么关系?
标签: sql oracle select subquery