我们假设我的表格格式如下:
我想编写一个查询,找出给定帧和输出大小写的最大站点(结果按帧和输出大小写分组),但也返回有序P(最后是V2,V3,将与最大站相关联的T,M2和M3)。所需的查询如下所示:
我不能为我的生活弄清楚这一点。我已将访问数据库的副本发布到我的Google驱动器:https://drive.google.com/folderview?id=0B9VpkDoFQISJOFcwS2RMSGJ5RVk&usp=sharing
答案 0 :(得分:0)
select x.*, t.p
from (select frame, outputcase, max(station) as max_station
from tbl
group by frame, outputcase) x
inner join tbl t
on x.frame = t.frame
and x.outputcase = t.outputcase
and x.max_station = t.station
order by x.frame, x.outputcase;
作为避免混淆的注释,w /第二列,t是表别名,p是列名。
我已经为x指定别名的子查询找到(frame,outputcase)的每个唯一组合的max(station)。这就是你想要的,但问题不止于此,你也想要列p。在同一个查询中无法选择的原因是因为您必须按它进行分组,并且您不希望每个(frame,outputcase,p)组合的max(station)。您想要(帧,输出)的每个组合的最大(站点)。
因为我们无法在第一步中获得列p,所以我们必须使用我们获得的值(我已经分配了别名max_station)和明显的连接返回到原始表框架和输出的条件。所以我们在这三个东西上加入原始表,其中2个是实际表中的字段,其中一个是在子查询(max_station)中计算的。
因为我们已经加入了原始表格,所以我们可以从原始表格中选择列p。
答案 1 :(得分:0)
稍微返回查询,但下面的结果提供了所需的结果:
SELECT t1.*
FROM [Element Forces - Frames] as t1
WHERE t1.Station In (SELECT TOP 1 t2.Station
FROM [Element Forces - Frames] as t2
WHERE t2.Frame = t1.Frame
ORDER BY t2.Station DESC)
ORDER BY t1.Frame ASC, t1.OutputCase ASC;
我仍然要感谢所有发布答案的人。我确信这只是我正在努力解决的语法错误。