MS SQL Server 2008 - 从结果子集中查找最大值

时间:2014-03-05 19:32:25

标签: sql sql-server-2008

我试图在报告中提取最新订单和标记到该项目的价格。我想为系统中的所有不同部分提取P类型的最大值(最近的记录)。

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订单,这不是我想要的。我做错了什么?

2 个答案:

答案 0 :(得分:2)

尝试这样的事情:

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

编辑:我无法拼写。

答案 1 :(得分:1)

正如JNK所述,您的子查询不会查看外部WHERE子句的相同条件。您的查询select max(orderno) from od i where i.partno=od.partno应从示例数据中返回2013。因此,您的WHERE子句实际上是WHERE type='P'' and od.orderno = 2013,当然它与任何行都不匹配。