查询通过比较最大数量和最大数量以下的所有记录来列出记录

时间:2013-06-21 11:25:42

标签: sql

表X_PROGRAM_LOCATION中有多个记录。这个表包含x_program,location_Id,version。有多个x_program,在X_program的同名下有不同的location_id和各种版本。 我想编写一个查询,可以整理出所有x_program的更高版本中不可用的location_id,但它们是x_program的较低版本。

注意: - 我想要更低版本的location_Id的所有列表,以便我可以添加更高版本的那些。

1 个答案:

答案 0 :(得分:0)

查看每个程序/位置组合的最大版本可能足以达到您的目的:

select x_program, location_id, max(version)
from x_program_location pl
group by x_program, location_id

通过计算最大版本并使用having子句,您可以获得不是最高版本的那些:

select x_program, location_id, max(version)
from x_program_location pl join
     (select x_program, max(version) as maxv
      from x_program_location
       group by x_program
     ) xp
     on pl.x_program = xp.x_program
group by x_program, location_id
having max(version) < max(maxv)