我有一个SQL结果集,如下所示:
如何才能将此结果显示为每个ItemCode只显示一行?使用GROUP BY似乎不起作用,因为它要求我包含阻止我正在寻找的分组的列。
我写的查询是从每个仓库中有一行的表中提取数据,我试图以每个ItemCode只有一行的方式对其进行格式化。我认为旋转是我想要做的术语..
以下是我目前的查询:
SELECT
ItemCode,
ISNULL((SELECT Quantity WHERE WhsCode = 10), 0) 'Whs10QTY',
ISNULL((SELECT Quantity WHERE WhsCode = 20), 0) 'Whs20QTY',
ISNULL((SELECT SalesAmt WHERE WhsCode = 10), 0) 'Whs10SalesAmt',
ISNULL((SELECT SalesAmt WHERE WhsCode = 20), 0) 'Whs20SalesAmt',
ISNULL((SELECT GrssProfit WHERE WhsCode = 10), 0) 'Whs10GrssProfit',
ISNULL((SELECT GrssProfit WHERE WhsCode = 20), 0) 'Whs20GrssProfit'
FROM
@Table t
注意:我可能需要帮助重新编写和重新编写此问题,以使其对社区更有用。谢谢你的帮助!
答案 0 :(得分:1)
我认为你可以这样简化:
Select ItemCode
,Whs10QTY = sum(case when WhsCode = 10 then Quantity else 0 end)
,Whs20QTY = sum(case when WhsCode = 20 then Quantity else 0 end)
,Whs10SalesAmt = sum(case when WhsCode = 10 then SalesAmt else 0 end)
,Whs20SalesAmt = sum(case when WhsCode = 20 then SalesAmt else 0 end)
,Whs10GrssProfit = sum(case when WhsCode = 10 then GrssProfit else 0 end)
,Whs20GrssProfit = sum(case when WhsCode = 20 then GrssProfit else 0 end)
From @Table t
Group By ItemCode