Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql select中的Group函数与子查询_Sql_Oracle_Group By - Fatal编程技术网

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
。稍微使用一下该语法,看看是否得到了所需的输出。