我有两个表,第一个是昨天的库存水平,称为“昨天”,包含两列:
StockNumber, StockLevel
第二个表是今天的库存水平,称为“ today ”,并具有相同的列“StockNumber, StockLevel”。
我的问题是,我如何找到“ StockLevel ”更改和“today”中出现的新“ StockNumber ”的“昨天”和“今天”表之间的库存水平差异。
如果这可以用直接的 SQL 来完成,那就太好了,但是使用 PHP 添加额外的处理级别也是可以的
select y.StockNumber, t.StockLevel - y.StockLevel from yesterday as y inner join today as t on (y.StockNumber = t.StockNumber)
编辑:
捕获今天表中不在昨天表中的产品:
select y.StockNumber, t.StockLevel - coalesce(y.StockLevel,0) from yesterday as y right join today as t on (y.StockNumber = t.StockNumber)
合并确保如果您有一个不在的产品yesterday
,您将得到t.StockLevel - 0
而不是t.StockLevel - NULL
这会让你知道昨天的变化,对于今天的新股票返回 null (即从昨天没有变化来显示)
SELECT t.stocknumber, t.stocklevel-y.stocklevel difference
FROM today t
LEFT JOIN yesterday y
ON t.stocknumber = y.stocknumber
那么,您可以使用以下 sql 找出昨天和今天的库存水平之间的差异。
select y.stockNumber, (t.stockLevel-y.stockLevel) as difference
from today t, yesterday y,
where t.stockNumber=y.stockNumber
group by t.stockNumber,t.stockLevel,y.stockLevel
希望这可以帮助。