需要做一个像 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]) )
我有一个 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
有什么想法吗?
您可以更改查询以执行 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]) )