Avatar billede rince Nybegynder
27. april 2012 - 22:34 Der er 5 kommentarer og
1 løsning

Sammenlign på tværs af tabel og udregn difference

Jeg har en tabel med priser på nogle produkter. Og jeg har brug for en query, der kan beregne prisforskellen imellem de to seneste entries i tabellen.
(sorteret efter største difference)

I nedenstående tilfælde skal den for PRODUKTID=2 kun beregne forskellen på række 2 og 3, da det udfra DATO er de to seneste entries i tabellen.
(Og forskellen imellem række 1,2 og 1,3 skal ikke med)


ID | PRODUKTID | DATO | PRIS

1 | 2 | 2012-04-12 | 20
2 | 2 | 2012-04-16 | 25
3 | 2 | 2012-04-25 | 5
4 | 4 | 2012-04-25 | 15
5 | 4 | 2012-04-26 | 30
Avatar billede arne_v Ekspert
28. april 2012 - 00:07 #1
Vil altid kun goere det for et produkt eller skal du have det ud for alle produkter paa en gang?
Avatar billede rince Nybegynder
28. april 2012 - 06:57 #2
Det jeg i bund og grund mangler er et resultat hvor alle produkter der er faldet i pris er listet.
Så queryen skulle gerne returnere "alle".
Avatar billede mireigi Novice
28. april 2012 - 17:38 #3
Jeg ved ikke om det kan optimeres eller gøres på en smartere måde, men dette kan i hvert fald gøre det for dig:
SELECT    P1.ProductID, ((P1.Price - P2.Price) * (-1)) AS PriceChange
FROM        tblProduct AS P1 LEFT OUTER JOIN
                      tblProduct AS P2 ON P1.ProductID = P2.ProductID AND P1.Date < P2.Date
WHERE    (P2.ID IS NOT NULL) AND (P1.ID IN
                          (SELECT    TOP (2) ID
                            FROM          tblProduct
                            WHERE      (ProductID = P1.ProductID)
                            ORDER BY Date DESC))
ORDER BY P1.ProductID
Avatar billede rince Nybegynder
29. april 2012 - 07:37 #4
Det er uden tvivl noget jeg kan arbejde videre med - jeg siger mange tak.

Så smid et svar så kan du få nogle point :)
Avatar billede mireigi Novice
29. april 2012 - 12:34 #5
Det var så lidt, og tak for point :)
Avatar billede rince Nybegynder
29. april 2012 - 22:28 #6
Det var vist mest i teorien, for MYSQL tillader desværre ikke LIMIT's i en sub-query.
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