2012-02-23 125 views
0

我的SQL Server Express 2005表有itemId,ItemName,price,ItemCount,date列,每個月有幾行輸入。上個月SQL Server 2005最近一次輸入

我需要檢索一個單獨的行,每最近itemId,ItemName,price,ItemCount,date進入最後一個月

謝謝很多 阿爾貝託

+0

*最近*由什麼? '日期'? *對於每個最近的* ...再次:每個由什麼?對於每個'itemId'? – 2012-02-23 11:44:07

+1

數據的一個例子可以解釋很多... – 2012-02-23 11:57:16

回答

1

如果我理解正確的話,你需要用ROW_NUMBER()條款PARTITION BY

喜歡的東西(未測試):

;WITH a AS (
SELECT 
    itemId,ItemName,price,ItemCount,date 
    , ROW_NUMBER() OVER (PARTITION BY itemId,ItemName,price,ItemCount ORDER BY date DESC) AS num 
FROM 
table 
WHERE 
date >= @begin_on_current_month 
) 
SELECT 
    a.* 
FROM 
    a 
WHERE 
    a.num = 1 

這應返回最後一個條目 @begin_on_current_month後添加的每一個獨特的itemId,ItemName,price,ItemCount

0

它不工作

SELECT itemCode,ITEMNAME,速度,發現日期,ROW_NUMBER()OVER(PARTITION BY itemCode ORDER BY日期DESC)爲num FROM stockcheck的AS一 WHERE日期<「2012/01/01' 選擇一個。* 從 WHERE不支持a.num = 1個 ORDER BY itemcode

的OVER SQL構建體或語句。

6173鋁箔18" X 25' 77.0000 5.00 21/12/2011 00:00:00 1

6173鋁箔18" X 25' 86.9159 9.00 15/12/2011 00:00:00 2

6173鋁箔18" X 25' 70.0000 69.00 10/12/2011 00:00:00 3

6173鋁箔18" X 25' 86.9159 9.00 01/12/2011 00:00:00 4