如何避免我的方案SQL Server中的重复行?

时间:2017-02-22 11:11:14

标签: sql sql-server stored-procedures

这是我的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

以上查询结果 Result for above query

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

最终输出

Final output

  

您可以看到 ID的每隔一条记录,Store的值为零(0)。我不想显示那一行。

     

请不要建议我在where子句中添加条件,其中store&lt;&gt;由于我的第一个查询结果显示结果,每个ID都有两次可用。   感谢

     

已更新   我从输出查询中删除了一些列以理解目的

1 个答案:

答案 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;

然后只使用连接...