联接后在SQL中减去两列
我有一张叫“订单”的桌子联接后在SQL中减去两列,sql,Sql,我有一张叫“订单”的桌子 PurchaseID VARCHAR purchaseDate DATETIME purchasePrice FLOAT 我想找出一天与另一天的购买价格之间的差异——puyrchaseID将是相同的。(当然,这只是一个示例表) 那真的有效吗 SELECT a.PurchaseID, ABS(a.PurchaseID - b.PurchaseID) AS diff FROM PurchaseID a INNER JOIN PurchaseI
PurchaseID VARCHAR
purchaseDate DATETIME
purchasePrice FLOAT
我想找出一天与另一天的购买价格之间的差异——puyrchaseID将是相同的。(当然,这只是一个示例表)
那真的有效吗
SELECT
a.PurchaseID,
ABS(a.PurchaseID - b.PurchaseID) AS diff
FROM
PurchaseID a INNER JOIN PurchaseID b ON a.PurchaseID=b.PurchaseID
WHERE a.PurchaseID=?
AND a.purchaseDate=?
AND b.purchaseDate=?
在占位符中填入要比较的ID和日期
查阅数据库管理系统文档,查看您是否掌握了数学知识。您可能还想添加
和a.purchaseDate b.purchaseDate
您是否尝试过类似的方法
SELECT a.purchasePrice AS p1, b.purchasePrice AS p2, a.purchasePrice - b.purchasePrice as difference
from Orders a inner join Orders b on a.PurchaseID = b.PurchaseID
如果愿意,也可以在查询中执行减法。您可能还希望确保不会在同一天购买两件物品:
SELECT a.purchasePrice AS purchasePriceDay1 , b.purchasePrice AS purchasePriceDay2, (purchasePriceDay2-purchasePriceDay1) AS purchasePriceDelta
from Orders a , Orders b
where a.PurchaseID = b.PurchaseID
and a.PurchaseDate < b.PurchaseDate
选择a.purchasePrice作为purchasePriceDay1,b.purchasePrice作为purchasePriceDay2,(purchasePriceDay2-purchasePriceDay1)作为purchasePriceDelta
从a命令到b命令
其中a.PurchaseID=b.PurchaseID
a.采购日期
为什么?如果我想知道价格在同一天没有变化,那该怎么办:PIt与您的解决方案相同,只是使用子选择而不是联接。无论哪种方式,如果您使用索引进行搜索,它一点也不重要。@Benoit我们如何修改此查询以仅包括“ABS(a.PurchaseID-b.PurchaseID)>10”行
SELECT ((SELECT purchasePrice FROM Orders WHERE PurchaseID = 1 AND purchaseDate = '2010-06-21') - (SELECT purchasePrice FROM Orders WHERE PurchaseID = 1 AND purchaseDate = '2010-06-20')) AS diff;
SELECT a.purchasePrice AS purchasePriceDay1 , b.purchasePrice AS purchasePriceDay2, (purchasePriceDay2-purchasePriceDay1) AS purchasePriceDelta
from Orders a , Orders b
where a.PurchaseID = b.PurchaseID
and a.PurchaseDate < b.PurchaseDate