0

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

注意:-我想要所有来自较低版本的 location_Id 列表,以便我可以在较高版本中添加这些列表。

4

1 回答 1

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)
于 2013-06-21T11:31:59.547 回答