webForumDet fria alternativet

Hjälp med Group By

1 svar · 302 visningar · startad av gmorken

gmorkenMedlem sedan aug. 20082 inlägg
#1

Hej,
Skulle verkligen behöva lite hjälp
Jag har fastnat i en sql-fråga
Det här är vad jag vill göra:
Gruppera på ID och Location. Summera ihop Quantity och Cost (för både Sale och Purchase), samt ta MAX(Date) för alla ID där Type = Sale

Exempel data: Tabell OrderData:

ID  Date             Type         Location    Quantity     Cost
6   2008-10-02      Sale          A             4               3
6   2008-10-01      Purchase     D             88             13
5   2008-10-13      Sale          D             3               10
6   2008-10-14      Sale          D             16              16
6   2008-10-01      Purchase     X             1               13
6   2008-10-01      Purchase     D             22              11
6   2008-10-01      Purchase     C             54              65
5   2008-10-14      Sale           D             3               10
6   2008-10-31      Sale           D             6               12
4   2008-10-20      Purchase     D             5               70
4   2008-10-05      Purchase     D             2               1

Exempel på hur jag skulle vilja ha utdatat enligt ovanstående exempel: (Notera att ID 4 inte har nåt datum, för den har ingen Type med sale)

ID     Location       TotalQuantity     TotalCost     LastDateForSale
6      D                 32                    72                  2008-10-31  
6      A                 4                      3                   2008-10-02
4      D                 7                      71                
5      D                 3                      10                  2008-10

Nedan är den query jag har än så länge.
Problemet är att jag får sista datumet för både purchase och sale och jag vill endast ha sista datumet där type är sale.
Om jag sätter WHERE Type = 'Sale' så får jag inte rätt totalquantity och totalcost för dessa vill jag basera på både sale och purchase

SELECT
ID AS ID,
Location AS Location,
SUM(Quantit) AS TotalQuantity,
SUM(Cost) AS TotalCoast,
MAX(Date) AS LatestSalesDateForArticleInThatLocation

FROM
OrderData
Group By
ID, Location

LarsGMedlem sedan dec. 200012 464 inlägg
#2
SELECT
ID,
Location,
SUM(Quantit) AS TotalQuantity,
SUM(Cost) AS TotalCoast,
MAX(case when type = 'Sale' then Date end) 
  AS LatestSalesDateForArticleInThatLocation
 FROM OrderData
Group By ID, Location
131 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)