Sql select中的Group函数与子查询
我有以下选择:Sql select中的Group函数与子查询,sql,oracle,group-by,Sql,Oracle,Group By,我有以下选择: SELECT DISTINCT max(tctc_cntipcli) as "TypeOfContract" , max(texe_cncclipu) as "ContractNumber", max(tctc_cndocidc) as "ClientName", max(tsrv_cndesser) as "ServiceNam
SELECT DISTINCT
max(tctc_cntipcli) as "TypeOfContract" ,
max(texe_cncclipu) as "ContractNumber",
max(tctc_cndocidc) as "ClientName",
max(tsrv_cndesser) as "ServiceName",
max(texe_cnfuncid) as "ServiceNumber",
tsrs_cnsubsdc as "SubserviceName",
texe_cnsubser as "SubserviceNumber",
tmap_cndesc as "Map",
(
SELECT DECODE(to_char(count(tlof_cnlofrid)), '0', 'NA', COUNT(TLOF_CNLOFRID))
from service.kndtlof
where tlof_cncclipu = tctc_cncclipu
and tlof_cnservic = texe_cnfuncid
and tlof_cnsubser = texe_cnsubser
and tlof_cnfhalta > trunc (sysdate, 'mm')
) as "VolumeOffilesMessages"
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 tsrv_cnestado in ('01', '03')
and tsrs_cnestado in ('01', '03')
and tscm_cnestado in ('01', '03')
and tmap_cnestado in ('01', '03')
group by tsrs_cnsubsdc, texe_cnsubser, tmap_cndesc
order by texe_cncclipu;
输出:
C|50000614|Lindsey|InformationReporting|3050|940PreviousDay|I1|BAISameDayWire|N
C|50000614|Lindsey|WirePayments|3001|WireStatus|S1|MT101SWIFTStatus|NA
C|50000614|Lindsey|WirePayments|3001|WirePayments|W1|Sungard820Payment|NA
我需要在第1列、第2列、第3列和第4列和第5列上使用max,以使输出如下所示:
C|50000614|Lindsey|InformationRep|3050|PreviousDay |I1|BAISameDayWire |NA
WirePayments |3001|WireStatus |S1|MT101SWIFTStatus |NA
WirePayments|W1|Sungard820Payment|NA
我已经在外部查询中的所选列上尝试了最大值,并不断得到“ora 0037:非单个组函数”错误。谢谢。
MAX
是一个分析函数。这意味着它基于一组行计算单个值。查看第页了解函数本身的文档,第页了解分析函数的信息。您必须使用group BY
语句根据您的规范对数据进行分组,否则您将遇到错误ORA-00937,与之前一样。请阅读并确认。我相信你可以创建一个具有相同行为的小样本。我没有编写这么长的查询,而是希望我们花几个小时来理解它。我确实在from子句的外部select和group by中最大化了所选列,但ORA-00979仍然存在错误:不是group by表达式?我很难阅读您的查询并理解您试图执行的操作,但是我可以告诉你,你可能想要在(分区依据…中)上执行单个MAX(…),而不是在5列上调用MAX
。稍微使用一下该语法,看看是否得到了所需的输出。