Avatar billede dk_akj Nybegynder
27. maj 2005 - 13:50 Der er 4 kommentarer og
1 løsning

Nested select med SUM

Jeg har lidt problemmer med en nested select og har simpelthen stirret mig blind på den.


Denne virker:
select swr.regid,sum(swr.waste) as waste,
nvl2( swr.regid,
    (SELECT fsa.current_output_sum FROM fsa WHERE fsa.regid=swr.regid),
        0
    ) as total

from swr

group by swr.regid
;

output:
regid    waste    total
25688    37    22419
25705    14    21660
25715    13    21561
25725    7    16473
25734    15    16386
25747    11    16425
25772    31    23347


Denne virker også:
select swr.regid,swr.recipe,sum(swr.waste) as waste,
nvl2( swr.regid,
    (SELECT fsa.current_output_sum FROM fsa WHERE fsa.regid=swr.regid),
        0
    ) as total

from swr

group by swr.recipe,swr.regid
;

regid    recept    waste    total
25772    195    31    23347
25688    233    37    22419
25705    233    14    21660
25715    233    13    21561
25725    233    7    16473
25734    233    15    16386
25747    233    11    16425

Denne fejler:
select swr.recipe,sum(swr.waste) as waste,
nvl2( swr.recipe,
    (SELECT fsa.current_output_sum FROM fsa WHERE fsa.regid=swr.regid),
        0
    ) as total

from swr

group by swr.recipe
;

Fejler med ORA-00979 not a group by expression



Det jeg ønsker at få ud:

recept    waste    total
195    31    23347
233    37    22419
233    14    21660
233    13    21561
233    7    16473
233    15    16386
233    11    16425


Hvad gør jeg forkert ?

//akj
Avatar billede hgc Nybegynder
27. maj 2005 - 14:41 #1
Jeg tror det er fordi du har swr.regid med i subselecten.
Du kan få det ønskede resultat ved at tilføje
select recipe, waste, total from (
select swr.regid,swr.recipe,sum(swr.waste) as waste,
nvl2( swr.regid,
    (SELECT fsa.current_output_sum FROM fsa WHERE fsa.regid=swr.regid),
        0
    ) as total
from swr
group by swr.recipe,swr.regid)
Avatar billede dk_akj Nybegynder
27. maj 2005 - 14:50 #2
Det ( eller noget lign) er prøvet

resultatet er så
195    31    23347
233    37    22419
233    14    21660
233    13    21561
233    7    16473
233    15    16386
233    11    16425


Men... du tændte lige en lille pære.

select recipe, sum(waste) as wastesum, sum(total) as totalsum from (
select fv_spider_wrapreg_recipe.regid,fv_spider_wrapreg_recipe.recipe,sum(fv_spider_wrapreg_recipe.waste) as waste,
nvl2( fv_spider_wrapreg_recipe.regid,
    (SELECT fv_spider_au.current_output_sum FROM fv_spider_au WHERE fv_spider_au.regid=fv_spider_wrapreg_recipe.regid),
        0
    ) as total
from fv_spider_wrapreg_recipe
group by fv_spider_wrapreg_recipe.recipe,fv_spider_wrapreg_recipe.regid) group by recipe ;

5410-195    31    23347
5410-233    97    114924


//akj
Avatar billede dk_akj Nybegynder
27. maj 2005 - 14:52 #3
Tak for tippet ;-)

God weekend
//akj
Avatar billede pgroen Nybegynder
08. juni 2005 - 12:57 #4
Ok, ku' du så ikke lige acceptere svaret (eller lægge dit eget svar, og acceptere dét) ?
Avatar billede dk_akj Nybegynder
23. juni 2005 - 07:57 #5
Sorry, du skal self. have point for at få vredet hjernen i den rigtige retning :-)

//akj
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester