我试图在报告中提取最新订单和标记到该项目的价格。我想为系统中的所有不同部分提取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订单,这不是我想要的。我做错了什么?
答案 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
,当然它与任何行都不匹配。