【发布时间】:2012-05-23 15:13:45
【问题描述】:
在 Oracle 9.2.0.8 中,我需要返回一个记录集,其中每个字段的特定字段 (LAB_SEQ) 最大(它是顺序 VARCHAR 数组 '0001'、'0002' 等) (WO_NUM)。要选择最大值,我尝试按降序排序并选择第一行。我在 StackOverflow 上可以找到的所有内容都表明,唯一的方法是使用相关子查询。然后我在外部查询的 WHERE 子句中使用这个最大值来为每个 WO_NUM 获取我想要的行:
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 排序在这里并不是很有用。
标签: sql database oracle subquery oracle9i