SQL: 如何比较同一列中两行的对应值?
SQL: how to compare corrosponding values two rows from same column?
我有两个表:
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)
这只是 returns 任何人数量的总和。我怎样才能达到那个结果?我需要将它们放在 crystal 报告中的图表上。
此外,我需要反之亦然,但有两个日期,但有一个特定产品。
如果你想return任何人数量的总和,你应该使用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
如果要比较2个以上的产品,查询必须使用group by。
到目前为止,@Loser 的回答对你的问题有好处。也许你应该给我们更多关于你预期结果的细节。
我有两个表:
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)
这只是 returns 任何人数量的总和。我怎样才能达到那个结果?我需要将它们放在 crystal 报告中的图表上。 此外,我需要反之亦然,但有两个日期,但有一个特定产品。
如果你想return任何人数量的总和,你应该使用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
如果要比较2个以上的产品,查询必须使用group by。 到目前为止,@Loser 的回答对你的问题有好处。也许你应该给我们更多关于你预期结果的细节。