SQL:如何比较同一列中两行的相应值?

时间:2016-03-03 01:27:21

标签: sql sql-server stored-procedures crystal-reports

我有两张桌子:

VendorTrading;
id  date
1   01-01-2015
2   01-01-2015

CustomerProducts;
id tradeID ProductName Quantity
1  1       XYZ         20
2  2       ABC         30

我需要比较两个产品的数量,名称将在特定日期作为参数给出。 这是我到目前为止的查询,

Select sum(Cp.ProductQuantity) 
FROM VendorTrading VT inner join CustomerProducts CP on VT.Id = CP.VendorTradingId
WHERE  CP.ProductName = ISNULL ('XYZ', CP.ProductName) and VT.Tradedate = isnull('2015-01-20',VT.Tradedate)

只返回任何人数量的总和。我怎样才能达到这个结果?我需要将它们放在水晶报告中的图表上。 更多的我需要相反的东西,但有两个日期,但一个特定的产品。

2 个答案:

答案 0 :(得分:1)

如果您想要返回任何人数量的总和,您应该使用group by。

Select CP.ProductName,sum(Cp.ProductQuantity) 
FROM VendorTrading VT inner join CustomerProducts CP 
ON VT.Id = CP.VendorTradingId
WHERE  CP.ProductName = ISNULL('XYZ', CP.ProductName)
AND VT.Tradedate = isnull('2015-01-20',VT.Tradedate)
AND CP.ProductName in ('xyz','abc')
GROUP BY CP.ProductName

答案 1 :(得分:0)

如果要比较2个以上的产品,则查询必须使用group by。 到目前为止,对@Loser的回答对你的问题有好处。也许你应该给我们更详细的预期结果。