2017-02-22 10 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 where where store <> 0. Это показывает результат из-за моего первого результата запроса. Там каждый идентификатор доступен два раза. Благодаря

ОБНОВЛЕНО я удалил некоторые столбцы из моего вывода запроса к пониманию цели

+0

Это не ясно, что вы хотите, потому что ваш явно получил два ** StoreID ** для каждого ** ID ** в ** [HQMatajer]. [ DBO]. [ItemRelationQty] **. Вы должны решить, как объединить/объединить это. Например, вы можете попробовать агрегат (СУММ) по ID – jean

ответ

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; 

А затем просто использовать присоединяется ...

+0

Да, именно этого я и жду. Благодарю. –

Смежные вопросы