2017-05-10 76 views
3

我對SQL的使用經驗有限,但我被要求從MS Access轉換下面的查詢。將查詢從MS Access轉換到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; 

這是結果...

通過谷歌,並在此論壇上其他的問題,我已經寫了下面的語句。但是,我無法將交付總量顯示在上圖中。

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] 

下面是該查詢的結果...

任何人都可以在建議如何得到補充交付合計欄?

感謝您的關注。

+0

請添加標籤的形式''你正在將*轉換爲*(即'MySQL','SQL-Server'等)。 – toonice

回答

1

您需要在DeliveryTotal添加爲第二個柱,作爲第一個被使用,它會顯示樞樞只有

嘗試

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

當我運行這個時,我確實得到了DeliveryTotal列,但它已經失去了產品類型上的分組。 – Somerville

+0

只是做了一個快速編輯,添加了一個新的聯接,應該解決這個問題。 –

+0

工作,謝謝你的幫助。 – Somerville