我想创建一个查询,该查询返回日期字段的最新日期和每个“评估”记录的整数字段的最高值。我认为需要的是相关子查询并使用MAX函数。
示例数据如下
日期字段可能具有每个评估的重复日期,但每个重复日期组在整数字段中将具有不同的整数。 例如
1256 2/6/14 0
1256 2/6/14 1
1256 1/6/14 0
4534 3/6/14 0
4534 3/6/14 1
4534 3/6/14 2
select assessment, Max(correctnum) maxofcorrectnum, dateeffect
from lraassm outerassm
where dateeffect =
(select MAX(dateeffect) maxofdateeffect
from pthdbo.lraassm innerassm
innerassm.assessment = outerassm.assessment
group by innerassm.assessment)
group by assessment, dateeffect
所以我的理论是内部查询执行并为外部查询提供外部查询中dateeffect字段的条件,然后外部查询将返回此dateeffect的correctnum字段的最大值,并返回其相应的评估和日期效应。
有人可以确认这是正确的。子查询如何处理行?还有什么方法可以解决这个问题?感谢
答案 0 :(得分:0)
您的查询正在做正确的事情但被授予,相关的子查询有点难以理解。子查询的作用是,它根据外部查询中的assessment
过滤记录,然后返回该评估的最大日期效果。实际上,您不需要关联查询的group by
子句。
这些类型的查询是在ERP系统中处理数据时常见的,当您只对“最新”记录等感兴趣时。这也称为“顶级段”类型的查询(查询优化器)有时候能够自己解决)。我发现,在SQL Server 2005或更高版本上,使用ROW_NUMBER()函数要容易得多。以下查询应返回与您相同的查询,即每个lraassm
的{{1}}一条记录,其中dateeffect和correctnum值最高。
assessment
答案 1 :(得分:0)
这是我使用我的表格编写的查询。但它会让你走上正确的轨道,你应该能够替换你的字段/表格。
Select * from Decode
where updated_time = (Select MAX(updated_time)from DECODE)
该查询为您提供具有最新updated_time的每条记录。下一个查询将返回最大的entry_id值以及那些记录
中的最新updated_timeSelect MAX(entry_id), updated_time from Decode
where updated_time = (Select MAX(updated_time)from DECODE)
group by updated_time
结果是2列1记录,第1列是条目id的最大值,第二列是最近的updated_time。这是你想要回归的吗?