2017-05-10 4 views
3

Ich habe begrenzte Erfahrung mit SQL, aber ich wurde gebeten, die folgende Abfrage von MS Access zu konvertieren.Konvertieren von Abfrage von MS Access zu SQL Server

TRANSFORM SUM(weekpace_crosstab.wgt) AS SumOfwgt 
    SELECT 
     Products.[Product Type], SUM(weekpace_crosstab.wgt) AS DeliveryTotal  
    FROM 
     (weekpace_crosstab 
    LEFT JOIN 
     Customer ON weekpace_crosstab.Customer = Customer.Customer) LEFT JOIN Products ON weekpace_crosstab.Product = Products.[Product Code] 
WHERE (((Customer.[Customer Group])="Sainsbury")) 
GROUP BY Products.[Product Type] 
PIVOT weekpace_crosstab.Date; 

Dies ist das Ergebnis ...

durch Google und andere Fragen zu diesem Forum habe ich die unten Anweisung geschrieben haben. Ich kann jedoch nicht erreichen, dass die Liefersumme wie im Bild oben erscheint. Hier

SELECT * FROM 
(
SELECT P.[Product Type], wc.Date, sum (wc.wgt) AS DeliveryTotal 

FROM weekpace_crosstab AS wc LEFT JOIN Customer AS C ON wc.Customer = C.Customer LEFT JOIN Products as p 

ON wc.Product = P.[Product Code] 

WHERE C.[Customer Group]='Co-op' 

GROUP BY p.[Product Type], wc.Date, wc.wgt 
) AS s 
PIVOT 
(
SUM (DeliveryTotal) 
FOR [Date] in ([2017-01-23],[2017-01-24],[2017-01-25],[2017-01-26],[2017-01-27],[2017-01-28],[2017-01-29]) 
)AS pvt 
ORDER BY [Product Type] 

ist das Ergebnis dieser Abfrage ...

jemand beraten, wie die Lieferung Gesamt Spalte hinzugefügt zu bekommen?

Vielen Dank für Ihre Aufmerksamkeit.

+0

Bitte durch den Dreh verwendeten hinzufügen

geschwenkt wird zeigen Versuchen 'SQL' Sie konvertieren * zu * (zB' MySQL', 'SQL-Server', etc.). – toonice

Antwort

1

Sie müssen in der DeliveryTotal als zweite Spalte hinzuzufügen, da der erste ist es nur ein Tag für die Form der

SELECT * FROM 
(
SELECT P.[Product Type], wc.Date, sum (wc.wgt) AS DeliveryTotal, w.wgt 
FROM weekpace_crosstab AS wc LEFT JOIN Customer AS C ON wc.Customer = 
C.Customer LEFT JOIN Products as p 

ON wc.Product = P.[Product Code] 
LEFT JOIN (
SELECT SUM(wgt)wgt, Product 
FROM weekpace_crosstab 
WHERE Date IN ('2017-01-23', '2017-01-24', '2017-01-25', '2017-01-26', '2017-01- 
27', '2017-01-28', '2017-01-29') 
GROUP BY product) w ON w.Product = wc.product 

WHERE C.[Customer Group]='Co-op' 

GROUP BY p.[Product Type], wc.Date, w.wgt 
) AS s 
PIVOT 
(
SUM (DeliveryTotal) 
FOR [Date] in ([2017-01-23],[2017-01-24],[2017-01-25],[2017-01-26],[2017-01- 
27],[2017-01-28],[2017-01-29]) 
)AS pvt 
ORDER BY [Product Type] 
+0

Wenn ich dies ausführen, bekomme ich die DeliveryTotal Spalte aber es hat die Gruppierung auf dem Produkttyp verloren. – Somerville

+0

Es wurde nur eine kurze Änderung vorgenommen, die in einem neuen Join hinzugefügt wurde, der dieses Problem lösen sollte. –

+0

Das hat funktioniert, danke für deine Hilfe. – Somerville

Verwandte Themen