sql >> Databasteknik >  >> RDS >> Oracle

ORA-00937:Inte en gruppfunktion i en grupp - Frågefel

Du kanske har fixat det med max men det är inte därför det händer och är lite hackigt. Ditt problem är att din underfråga, som översätts till en enda kolumn, inte är en samlad fråga, min , max , summa etc och måste därför inkluderas i en grupp efter klausul. Du fixade detta genom att slå in det i max eftersom maxvärdet för ett enskilt värde alltid kommer att vara konstant.

Men eftersom din underfråga i sig är en analytisk fråga och bara kommer att returnera en rad, är det självklart att använda en kartesisk koppling för att lägga till den i din fråga. I den explicita kopplingssyntaxen är detta känt som korskoppling kod> .

select count(*) todas
     , sum(case when i.prioridade = 1 then 1 else 0 end) urgente
     , sum(case when i.prioridade = 2 then 1 else 0 end) alta
     , sum(case when i.prioridade = 3 then 1 else 0 end) normal
     , sum(case when i.prioridade = 4 then 1 else 0 end) baixa
     , naoAvaliados
     , sum(case when i.situacao = 'P' then 1 else 0 end) pendentes
     , sum(case when i.situacao = 'A' or i.situacao = 'I' then 1 else 0 end) iniciados
  from GMITEMOS i 
 cross join (select count(*) as naoAvaliados
               from GMITEMOS j
              inner join GMCTLSLA k
                 on k.os = j.cd_numero_os 
                and k.item = j.item
              where j.situacao in ('A', 'I', 'P')
                and k.ordem = 99999
                    )
 where i.situacao in ('A', 'I', 'P')
   and exists (select 1 
                 from GMCTLSLA c 
                where c.os = i.cd_numero_os 
                  and c.item = i.item
                      )

Den kartesiska sammanfogningen har ett dåligt rykte eftersom den multiplicerar antalet rader på ena sidan av sammanfogningen med antalet rader på den andra. Det har dock sina användningsområden, särskilt i den här typen av fall.



  1. Funktion som USE för att peka på en SQL-databas på en annan server?

  2. Hur extraherar år, månader, dagar, timmar, minuter, sekunder från ett mysql-datum?

  3. Hur man exporterar SQL Server 2005-fråga till CSV

  4. SQLAlchemy-session och anslutningsrelation