在Oracle 9.2.0.8中,我需要返回一个特定字段(LAB_SEQ)最大的记录集(它是一个连续的VARCHAR数组'0001','0002'等)对于每个另一个字段(WO_NUM)。要选择最大值,我试图按降序排列并选择第一行。我在StackOverflow上找到的所有东西都表明,唯一的方法是使用相关的子查询。然后,我用这个最大外部查询的WHERE子句中得到我想要每个WO_NUM行:在Oracle中避免相关子查询
SELECT lt.WO_NUM, lt.EMP_NUM, lt.LAB_END_DATE, lt.LAB_END_TIME
FROM LAB_TIM lt WHERE lt.LAB_SEQ = (
SELECT LAB_SEQ FROM (
SELECT lab.LAB_SEQ FROM LAB_TIM lab WHERE lab.CCN='1' AND MAS_LOC='1'
AND lt.WO_NUM = lab.WO_NUM ORDER BY ROWNUM DESC
) WHERE ROWNUM=1
)
然而,这个返回lt.WO_NUM错误的无效的标识符。研究表明,ORACLE 8只允许相关的子查询达到一个深度,并且建议重写以避免子查询 - 这是关于选择最大值的讨论暗示无法完成的事情。任何帮助得到这个声明执行将不胜感激。
由ROWNUM订购在这里并不是非常有用。 – DCookie