11. marts 2006 - 18:27Der er
5 kommentarer og 1 løsning
SQL med Distinct og sum?
Hey!
Jeg har en database der ser således ud:
::Products:: - ProductID - ProductName
::Sales:: - SaleID - SaleItem (Refererer til hvilket produkt der er solgt -> Products.ProductID) - SaleAmount - SalePrice
Det jeg vil nu er at trække en liste ud med ALLE produkter og salg hvor der er foretaget nogen.
Altså skulle jeg gerne få en liste som ser således ud:
Fodbold, 100stk, kr. 50,- Tennisbold, 50stk, kr. 10,- Fodbold, 20stk, kr. 45,-
Her kan vi se at der er duplikater af "fodbold" fordi salgene bliver skrevet ind i databasen som de kommer. Bruger jeg "distinct" smider Access de resterende poster ud - Det skal den ikke!
Det resultat jeg søger er:
Badebold, 0,- Fodbold, 5.000,- Tennisbold, 500,-
Så alle produkter bliver listet uanset om de er solgt eller ej, og så summen af salgene (Antal * pris) fremgår i anden kolonne.
SELECT SUM(Sales.SalePrice * Sales.SaleAmount), Products.ProductName FROM Products LEFT OUTER JOIN Sales ON Products.ProductID = Sales.SaleItem GROUP BY Products.ProductID, Products.ProductName
Hvis dette ikke virker er problemet nok at håndtere NULL for de varer der ikke er solgt. Prøv med INNER i stedet for LEFT OUTER, bare for at teste det.
Hvis det er det der er problemet ved jeg ikke lige hvad der skal gøres, for ISNULL fnktionen findes ikke i Access, gør den?
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.