将查询从MS Access转换为SQL Server

将查询从MS Access转换为SQL Server,sql,sql-server,ms-access,Sql,Sql Server,Ms Access,我在SQL方面的经验有限,但我被要求从MS Access转换以下查询 TRANSFORM SUM(weekpace_crosstab.wgt) AS SumOfwgt SELECT Products.[Product Type], SUM(weekpace_crosstab.wgt) AS DeliveryTotal FROM (weekpace_crosstab LEFT JOIN Customer ON

我在SQL方面的经验有限,但我被要求从MS Access转换以下查询

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]
以下是此查询的结果。。。

有谁能建议如何添加“交货总额”列吗


感谢您的关注。

您需要在DeliveryTotal中添加第二列,因为第一列正由pivot使用,它将仅显示pivoted

试一试


请为您要转换到的
SQL
格式(即
MySQL
SQL Server
,等等)添加一个标记。当我运行此操作时,我确实获得了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]