X_PROGRAM_LOCATION表中有多条记录。这些表包含x_program,location_Id,version。有多个x_program,同名的X_program下有不同的location_id和不同的版本。我想编写一个查询,它可以整理所有 x_program 的更高版本中不可用但它们在 x_program 的较低版本中的 location_id。
注意:-我想要所有来自较低版本的 location_Id 列表,以便我可以在较高版本中添加这些列表。
X_PROGRAM_LOCATION表中有多条记录。这些表包含x_program,location_Id,version。有多个x_program,同名的X_program下有不同的location_id和不同的版本。我想编写一个查询,它可以整理所有 x_program 的更高版本中不可用但它们在 x_program 的较低版本中的 location_id。
注意:-我想要所有来自较低版本的 location_Id 列表,以便我可以在较高版本中添加这些列表。
仅查看每个程序/位置组合的最大版本可能就足以满足您的目的:
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)