2017-02-22 22 views
0

これは私のSQLクエリと結果です。私は期待した結果を得ました。しかし、それは私の結果に追加の行を追加しています。シナリオSQL Serverで行が重複しないようにするにはどうすればよいですか?

クエリ結果上記の私のクエリ

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

出力クエリ

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の毎秒記録を見ることができますし、ストアの値がゼロ(0)です。私はその行を見せたくありません。

where句に条件を追加することを提案しないでください。ここでは、ストア<> 0です。私の最初のクエリ結果のために結果が表示されます。すべてのIDが2回あります。 おかげ を更新し

は、私はあなたがPIVOTを使用して考えがあります目的

+0

...参加します。[ dbo]。[ItemRelationQty] **。これを集約する方法を決定する必要があります。たとえば、IDで集計(SUM)を試みることができます – jean

答えて

1

を理解する私の出力クエリから一部の列を削除しましたか?

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; 

そしてちょうど使用は、それが[HQMatajer] **に**あなたが明確に** IDのために** StoreID ** 2を得たので、あなたが望む何をすべきかは明らかではありません

+0

はい、これは私が期待しているものです。ありがとう。 –

関連する問題