/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MS SQL: Sum af ordrelinier
Fra : MKJ


Dato : 05-10-05 16:53

Hej

Jeg er ved at lave en SELECT der kan liste summen af alle ordrelinier i
en ordre, jeg har lift problemer med GROUP BY. Min SELECT ser indtil
videre sådan ud:

SELECT OrderID AS Expr1, SUM(UnitCost) * Quantity
FROM OrderDetails
GROUP BY OrderID, Status, Quantity
HAVING (Status = 300)
ORDER BY OrderID

Som det fremgår indeholder OrderDetails følgende felter: OrderId,
UnitCost, Quantity. UnitCost er prisen og Quantity det bestilte antal.
Problemet er at når der er flere ordrelinier på eén ordre og Quantity er
forskellig får jeg ikke et samlet resultat men et resultat for alle
ordrelinier hvor Quantiy er 1 og et andet resultat hvor Quantity er 2
osv. Det er jo logisk nok men hvordan får jeg samlet hele summen i et
resultat?

--
MKJ

 
 
MKJ (05-10-2005)
Kommentar
Fra : MKJ


Dato : 05-10-05 17:05

MKJ wrote:
> Hej
>
>
> SELECT OrderID AS Expr1, SUM(UnitCost) * Quantity
> FROM OrderDetails
> GROUP BY OrderID, Status, Quantity
> HAVING (Status = 300)
> ORDER BY OrderID

Løsning fundet:
SELECT OrderID AS OrderId, SUM(UnitCost * Quantity) AS Total
FROM OrderDetails
GROUP BY OrderID, Status
HAVING (Status = 300)
ORDER BY OrderID

Peter Brodersen (05-10-2005)
Kommentar
Fra : Peter Brodersen


Dato : 05-10-05 17:05

On Wed, 05 Oct 2005 17:52:32 +0200, MKJ <m@ds.dk> wrote:

>Jeg er ved at lave en SELECT der kan liste summen af alle ordrelinier i
>en ordre, jeg har lift problemer med GROUP BY. Min SELECT ser indtil
>videre sådan ud:
>
>SELECT OrderID AS Expr1, SUM(UnitCost) * Quantity
>FROM OrderDetails
>GROUP BY OrderID, Status, Quantity
>HAVING (Status = 300)
>ORDER BY OrderID

Undlad at GROUP BY på Quantity, og smid den ind i din SUM()?

SELECT OrderID AS Expr1, SUM(UnitCost * Quantity)

I princippet kan du også undlade Status i din GROUP BY, ved at smide
den ind i en WHERE-clause i stedet for HAVING. Det kan også gøre
afviklingen hurtigere.

--
- Peter Brodersen

Søg
Reklame
Statistik
Spørgsmål : 177459
Tips : 31964
Nyheder : 719565
Indlæg : 6408180
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste