17. maj 2018 - 10:31Der er
6 kommentarer og 1 løsning
SQL group by
Hej
Jeg har en ordrerline tabel hvor der bl.a. er nedenstående felter id produktId produktSubId Navn Antal Pris....... 1 12 NULL Navn 1 5 10 2 14 1 Navn 2 2 15 3 14 2 Navn 3 3 20 4 12 NULL Navn 1 4 10 5 13 1 Navn 4 6 30 6 14 2 Navn 3 1 20
Jeg henter pt hvor den benytter SUM(Antal*Pris) og SUM(Antal) og benytter GROUP BY på produktId
Men det betyder at dem der har et andet produktSubId bliver talt med
Jeg vil gerne hente så jeg fik følgende resultat Navn Sum(Antal*Pris) SUM(Antal) Navn 1 90 9 Navn 2 30 2 Navn 3 80 4 Navn 4 180 6
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Jeg bruger nu GROUP BY productid - men så lægger den id 2, 3 og 6 sammen fordi den har samme produktid
Arne: Ja det kunne virke. Men navnet gemmes i ordrelinjetabellen når køb foretages så der altid står det rigtige. Men navnet på produktet kan ændres. Så hvis man f.eks. ændre navnet på produktet til "Navn 2 (Nyt)" så vil den tælle dem som 2 forskellige selvom de har samme produktid og subid
Jeg skulle lige bruge et øjeblik på at forstå dig, men tror det du ønsker er en dobbelt group by:
select navn, Sum(antal*pris), Sum(antal) from tabel group by produktId,navn order by navn;
altså "group by produktId,navn" så starter den med produktId og navn efterfølgende.
Resultatet af sql ovenfor er du du har efter spurgt: Navn Sum(Antal*Pris) SUM(Antal) Navn 1 90 9 Navn 2 30 2 Navn 3 80 4 Navn 4 180 6
Synes godt om
Ny brugerNybegynder
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.