需要做一个像 pivot table in excel 和求和运算的查询

Need to make a query which like pivot table in excel with sum operation

我有一个 Table 包含 SerialNo,StockItemId,Type,WareHouseId,NetCount 这是我的查询

SELECT Warehouse.WHWorkOrderDetailsSerials.SerialNo
  ,Warehouse.WHWorkOrderDetails.StockItemId, Warehouse.WHWorkOrderHeader.Type
  ,Warehouse.WHWorkOrderHeader.WareHouseId 
  ,CASE  
       WHEN Warehouse.WHWorkOrderHeader.Type IN ('RS', 'RR', 'RT', 'OB') 
      THEN '1' 
      ELSE '-1' 
      END AS NetCount
FROM Warehouse.WHWorkOrderDetails 
 INNER JOIN Warehouse.WHWorkOrderDetailsSerials 
      ON Warehouse.WHWorkOrderDetails.Id = Warehouse.WHWorkOrderDetailsSerials.WorkOrderDetailId 
      INNER JOIN Warehouse.WHWorkOrderHeader 
      ON Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = Warehouse.WHWorkOrderHeader.ID

我需要创建一个枢轴 table,它具有每个 WorkHouseId 的 NetCount 总和 就像 excel 中的这个枢轴 table

有什么想法吗?

您可以更改查询以执行 PIVOT,而不必将其放入 Excel。

   SELECT SerialNo, [1], [2], [3], [4], [5]
  FROM 

(SELECT Warehouse.WHWorkOrderDetailsSerials.SerialNo
,Warehouse.WHWorkOrderDetails.StockItemId, Warehouse.WHWorkOrderHeader.Type
,Warehouse.WHWorkOrderHeader.WareHouseId 
,CASE  
   WHEN Warehouse.WHWorkOrderHeader.Type IN ('RS', 'RR', 'RT', 'OB') 
  THEN '1' 
  ELSE '-1' 
  END AS NetCount
FROM Warehouse.WHWorkOrderDetails 
INNER JOIN Warehouse.WHWorkOrderDetailsSerials 
  ON Warehouse.WHWorkOrderDetails.Id = Warehouse.WHWorkOrderDetailsSerials.WorkOrderDetailId 
  INNER JOIN Warehouse.WHWorkOrderHeader 
  ON Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = Warehouse.WHWorkOrderHeader.ID) AS d PIVOT( SUM(NetCount) FOR WareHouseId IN ([1],[2],[3],[4],[5]) )

您似乎不需要原始查询中的所有字段。我更新了以下查询以仅显示您需要的字段。

SELECT SerialNo, [1], [2], [3], [4], [5]
  FROM 

(SELECT Warehouse.WHWorkOrderDetailsSerials.SerialNo
,Warehouse.WHWorkOrderHeader.WareHouseId 
,CASE  
   WHEN Warehouse.WHWorkOrderHeader.Type IN ('RS', 'RR', 'RT', 'OB') 
  THEN '1' 
  ELSE '-1' 
  END AS NetCount

FROM Warehouse.WHWorkOrderDetails 
INNER JOIN Warehouse.WHWorkOrderDetailsSerials 
  ON Warehouse.WHWorkOrderDetails.Id = Warehouse.WHWorkOrderDetailsSerials.WorkOrderDetailId 
  INNER JOIN Warehouse.WHWorkOrderHeader 
  ON Warehouse.WHWorkOrderDetails.WHWorkOrderHeaderId = Warehouse.WHWorkOrderHeader.ID) AS d PIVOT( SUM(NetCount) FOR WareHouseId IN ([1],[2],[3],[4],[5]) )