2013-01-11 41 views
0

我一直在試圖弄清楚如何從包含庫存物品價格變化歷史的sql表中提取數據。數據是如何佈局的例子如下:從一個存儲價格歷史的sql表中提取數據

Item No Date changed Price 
1   11/20/2012  15 
2   11/28/2012  25 
1   12/1/2012  18 

我需要拉每個項目的最後一項沒有,這樣我可以在其中找到價格已經超過某個百分比變化多。一旦我得到所有的信息,但我不知道如何只提取每個項目的最後兩個更新。任何幫助將不勝感激

+0

您正在使用什麼版本的SQL Server,MS SQL? MySQL的?等 – RobJohnson

+0

我正在使用mssql – jdbrau03

回答

0

這就是我如何工作。 create table ## inventoryitems(ID INT Identity(1,1),itemno char(11));

插入到## inventoryitems 從InventoryActPkgCostHist 選擇不同貨號 其中LOCID = 3

創建表##不是Temptable(項目#炭(11),CHANGEDATE日期時間,價格數字(8,2));

DECLARE @Counter INT SET @Counter = 1 而@Counter < =(從選擇## inventoryitems COUNT(*))

開始 插入到##不是Temptable 選擇頂部2 i.itemno, i.ActPkgCostDate,i.ActPkgCost 從InventoryActPkgCostHist我加入##上i.itemno inventoryitesm溫度= temp.itemno 其中[email protected]和locidd = 3 爲了通過貨號,ActPkgCostDate降序

集@Counter = @ Counter + 1

謝謝大家的幫助

1

簡單地按日期排序,並檢索每個id兩行。

SELECT Price FROM table WHERE id=2 ORDER BY date_changed DESC LIMIT 0,2

這是最後的兩個價格的變化。

+0

這將工作,但需要循環的項目號碼,如果他這樣做的每一個項目,這可能是一個問題 – JeffS

+0

這也可以在msmsql中工作,並且我會遍歷所有項目 – jdbrau03