2014-03-05 59 views
0

我試圖提取最近的訂單以及在報告中標記爲該項目的價格。我想拉取系統中所有不同部分的P型最大值(最新記錄)。MS SQL Server 2008 - 從結果的子集中找到最大值

part | type | orderno | price | 
------------------------------- 
aj1 p  1332  200 
aj1 v  2013  10 
aj1 v  2013  15 

SELECT * 
FROM od 
WHERE type='P'' 
and od.orderno = (select max(orderno) from od i where i.partno=od.partno) 

我的結果是空的。當我取消類型限制時,我得到的2 V訂單不是我想要的。我究竟做錯了什麼?

+1

將'和type = od.type'添加到子查詢 – JNK

回答

2

嘗試這樣:

SELECT * FROM od 
WHERE orderno IN(SELECT MAX(orderno), Part FROM od WHERE Type = 'P' GROUP BY Part) 

編輯:我不會拼寫。

+1

非常感謝,我知道這很簡單,我做錯了.. – ltsai

1

正如JNK所述,您的子查詢沒有看到與您的外部WHERE子句相同的條件。您的查詢select max(orderno) from od i where i.partno=od.partno應該從示例數據中返回2013。因此,你的WHERE子句真的是WHERE type='P'' and od.orderno = 2013,當然這不匹配任何行。

+0

感謝您提供我做錯了什麼背景! – ltsai