这是我的sql查询和结果。我得到了我期望的结果。但它在我的结果中添加了额外的行。
我的查询
Declare @store1001 varchar(10)='1001'
Declare @storeAll varchar(10)='StoreAll'
select ID,StoreID,TotalQtyParent into #tempQuantity
From
(
select ID,@store1001 StoreID,Sum([TotalQtyParent]) TotalQtyParent
FROM [HQMatajer].[dbo].[ItemRelationQty]
where StoreID='1001' and TotalQtyParent is not null
group by ID
Union
select ID,@storeAll StoreID,sum([TotalQtyParent]) TotalQtyParent
FROM [HQMatajer].[dbo].[ItemRelationQty]
where StoreID<>'1001' and TotalQtyParent is not null
group by ID
) totalquantity
OutPut查询
select TotalQty.ID, item.ItemLookupCode,item.Description,
(
case when TotalQty.StoreID = '1001' then TotalQty.TotalQtyParent
else 0 end
) WHS,
(
case when TotalQty1.StoreID = 'StoreAll' then TotalQty1.TotalQtyParent
else 0 end
) Store
FROM
#tempQuantity TotalQty
INNER JOIN #tempQuantity TotalQty1 on TotalQty.ID=TotalQty1.ID
LEFT JOIN HQMatajer.dbo.Item item on item.id=TotalQty.ID
order by WHS desc,Store desc
最终输出
您可以看到 ID的每隔一条记录,Store的值为零(0)。我不想显示那一行。
请不要建议我在where子句中添加条件,其中store&lt;&gt;由于我的第一个查询结果显示结果,每个ID都有两次可用。 感谢
已更新 我从输出查询中删除了一些列以理解目的
答案 0 :(得分:1)
您是否考虑过使用PIVOT
?
SELECT
ID,
[1001] AS WHS,
[StoreAll] AS Store
FROM
(
SELECT
ID, StoreID, TotalQtyParent
FROM #tempQuantity
) AS TotalQty
PIVOT
(
SUM(TotalQtyParent)
FOR StoreID IN ([1001], [StoreAll])
) AS PivotTable;
然后只使用连接...