如何在多个条件下获取子查询中的总行数

时间:2016-02-28 18:25:41

标签: sql-server subquery where-clause having-clause

此查询返回产品数量的总和等于0且产品名称为' XYZ'的行数。但我希望每种产品都有相同的结果。例如,如果我从where子句中删除产品名称,那么它将为数量为0的每个产品带来SUM。我希望它为每个产品单独返回。产品未来可能会增加。我必须首先检查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

1 个答案:

答案 0 :(得分:0)

Affan,您可以添加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