Как получить общее количество строк в подзапросе для нескольких условий

Этот запрос возвращает количество строк, в которых сумма количества продуктов равна 0, а название продукта — «XYZ». Но я хочу одинаковый результат для каждого продукта. Например, если я удалю название продукта из предложения where, он выведет СУММУ каждого продукта, где количество равно 0. Я хочу, чтобы он возвращался отдельно для каждого продукта. Продукты могут увеличиться в будущем. Я должен сначала проверить, сколько различных продуктов находится в таблице CustomerProduct, а затем мне нужно запросить одни и те же вещи для каждого продукта. Как мне это сделать. Название может быть не идеальным, пожалуйста, предложите / исправьте, если это необходимо.

select  Count(*) From 
(select distinct VI.Name, Cp.ProductName
FROM VendorInfo VI inner join VendorTrading VT on VI.Id = VT.VendorId inner join CustomerProducts CP on VT.Id = CP.VendorTradingId
Where VT.Tradedate = '2015-12-25' and CP.ProductName = 'XYZ'
GROUP BY VI.Name, Cp.ProductName, CP.ProductQuantity
HAVING  SUM( CP.ProductQuantity ) = 0) as x

person Affan Shahab    schedule 28.02.2016    source источник


Ответы (1)


Аффан, не могли бы вы добавить скрипт tsql для создания таблиц с некоторыми данными, чтобы нам было легче помогать. Однако, если вы упростите запрос, вы можете получить каждый продукт и поставщика с нулевым значением ProductQuantity.

select  VI.Name, Cp.ProductName, SUM( CP.ProductQuantity ) 
FROM VendorInfo VI 
inner join VendorTrading VT on VI.Id = VT.VendorId 
inner join CustomerProducts CP on VT.Id = CP.VendorTradingId
Where VT.Tradedate = '2015-12-25' 
GROUP BY VI.Name, Cp.ProductName
HAVING  SUM( CP.ProductQuantity ) = 0
person cameront    schedule 28.02.2016
comment
Вы можете получить сценарии здесь, в моем ответе > stackoverflow.com/questions/35684293/ - person gofr1; 29.02.2016