在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