Sql-Server
如何在最近的前一天加入?
想像一下,我有一個包含歷史價格數據的數據庫和一個包含日期的第二個表
Item | Price | Date Customer | Item | date ------------------------- --------------------------- A | 2.49$ | 2014-09-01 1 | A | 2014-08-27 B | 1.29$ | 2014-09-01 2 | A | 2014-09-02 A | 2.99$ | 2014-08-25 B | 1.39$ | 2014-08-26
每次價格變化時,都會在價格歷史表中輸入一個新行。
我怎樣才能(有效地)連接這兩個表,以便我可以獲得每個客戶當天必須支付的價格?
select * from dbo.Sales s cross apply ( select top (1) * from dbo.PriceHistory ph where ph.itemId = s.ItemId and ph.Date <= s.Date order by ph.Date desc ) ca;