以分组为中心?

Pivot With Grouping?

我正在为 SSRS 报告构建查询,并且我有位置和数量的数据透视表。我得到两行,每个位置一行,但是当我旋转时,我希望最终结果是一行。

SELECT * 
FROM ( SELECT DISTINCT  ItemNmbr ,
          ITEMDESC ,
          Location ,
          QtyOnhand ,
          QtyOnOrder ,
          QtyBackordered ,
          TotalInventory ,
          EXTDCOST ,
          InventoryValue 
          FROM #ssrsFinal
) AS p PIVOT
(SUM(QTYOnHand) FOR Location IN ( Loc1, Loc2, HUB, INLAND, Loc, [OLD Loc],[IN TRANSIT] )
) AS pvt;

我的结果是两行,我怎样才能把它变成一行?

我尝试将数据透视结果插入到临时 table 中,然后进行分组,但它不会继承 select 中的位置。

数据透视前的结果。 3 个不同的位置。

我想这就是您要找的:

你已经做出了枢轴,你只需要相应地聚合枢轴的结果table。

假设:按 ItemNmbr,ITEMDESC,EXTDCOST,Loc1,Loc2,HUB,INLAND,Loc,[OLD Loc],[IN TRANSIT]

分组
SELECT    ItemNmbr ,
          ITEMDESC ,
          QtyOnOrder=SUM(QtyOnOrder) ,
          QtyBackordered=SUM(QtyBackordered) ,
          TotalInventory=SUM(TotalInventory) ,
          EXTDCOST,
          InventoryValue = SUM(InventoryValue) ,
          Loc1, 
          Loc2, 
          HUB, 
          INLAND, 
          Loc, 
          [OLD Loc],
          [IN TRANSIT]
FROM ( SELECT DISTINCT  ItemNmbr ,
          ITEMDESC ,
          Location ,
          QtyOnhand ,
          QtyOnOrder ,
          QtyBackordered ,
          TotalInventory ,
          EXTDCOST ,
          InventoryValue 
          FROM #ssrsFinal
) AS p PIVOT
(SUM(QTYOnHand) FOR Location IN ( Loc1, Loc2, HUB, INLAND, Loc, [OLD Loc],[IN TRANSIT] )
) AS pvt
GROUP BY  ItemNmbr ,
          ITEMDESC ,
          EXTDCOST,
          Loc1, 
          Loc2, 
          HUB, 
          INLAND, 
          Loc, 
          [OLD Loc],
          [IN TRANSIT] ; 

回复评论:

样本数据集:

CREATE TABLE #ssrsFinal (ItemNmbr VARCHAR(10),
          ITEMDESC VARCHAR(100),
          Location VARCHAR(10),
          QtyOnhand INT,
          QtyOnOrder INT,
          QtyBackordered INT,
          TotalInventory INT,
          EXTDCOST DECIMAL(20,5),
          InventoryValue  DECIMAL(20,2))

INSERT INTO #ssrsFinal
VALUES 
('94185BJGD','SS MESH ROAST PAN, 2X GRILL CLAWS, STAM HNDL, GD','Something',0,0,0,0,14.18000,0),
('94185BJGD','SS MESH ROAST PAN, 2X GRILL CLAWS, STAM HNDL, GD','Something',0,0,0,0,14.18000,0),
('94185BJGD','SS MESH ROAST PAN, 2X GRILL CLAWS, STAM HNDL, GD','Something',3,0,0,3,14.18000,42.54)

响应评论“...为位置插入值而不是 "something" 尝试从示例中添加不同的位置,然后再次 运行 您的查询,它将拉回两行.我尝试了 INLAND、HUB 和 LOC。":

SELECT    ItemNmbr ,
          ITEMDESC ,
          QtyOnOrder=SUM(QtyOnOrder) ,
          QtyBackordered=SUM(QtyBackordered) ,
          TotalInventory=SUM(TotalInventory) ,
          EXTDCOST,
          InventoryValue = SUM(InventoryValue) ,
          Loc1=SUM(Loc1), 
          Loc2=SUM(Loc2), 
          HUB=SUM(HUB), 
          INLAND=SUM(INLAND),
          Loc=SUM(Loc), 
          [OLD Loc]=SUM([OLD Loc]),
          [IN TRANSIT]=SUM([IN TRANSIT])
FROM ( SELECT DISTINCT  ItemNmbr ,
          ITEMDESC ,
          Location ,
          QtyOnhand ,
          QtyOnOrder ,
          QtyBackordered ,
          TotalInventory ,
          EXTDCOST ,
          InventoryValue 
          FROM #ssrsFinal
) AS p PIVOT
(SUM(QTYOnHand) FOR Location IN ( Loc1, Loc2, HUB, INLAND, Loc, [OLD Loc],[IN TRANSIT] )
) AS pvt
GROUP BY  ItemNmbr ,
          ITEMDESC ,
          EXTDCOST  ; 

结果: