我需要一些帮助。 有一个包含大量数据的表格。 formtype,item_code,verion
所以我必须选择实际的formtype和item_code。 (实际版本的最大版本)。我尝试了max和great,但它没有用。所有版本都被选中。但我不知道为什么。
例如:
选择是:
select formtype, item_code, max(version)
from table_name;
结果:
我尝试过最好,但它的工作方式相同。 所以我只需要最后一个版本 - 实际版本(9)。 该表包含数千个fromtype和item_code,版本不同。
还有其他部分。 如果它能够工作,我需要选择previos版本。 (在示例中表示版本最大值之前)。
我试过子查询。
select b.formtype, b.item_code, max(b.version) from vps_form t,
(select formtype, item_code, version) b
where t.formtype = b.formtype
and t.item_code = b.item_code
group by b.formtype, b.item_code, b.version;
那么sombody可以帮助它有什么问题吗? 感谢。
答案 0 :(得分:0)
你刚刚错过了这个小组:
select formtype,
item_code,
max(version)
from vps_form
group by formtype, item_code;
要获得最新版本和之前版本,可以使用窗口函数完成:
select formtype, item_code, version
from (
select formtype,
item_code,
version,
row_number() over (partition by formtype, item_code order by version desc) as rn
from vps_form
) t
where rn <= 2
order by formtype, item_code, version;
或者,如果您需要将最新版本和先前版本作为一行中的两列:
select formtype, item_code, version, prev_version
from (
select formtype,
item_code,
version,
row_number() over (partition by formtype, item_code order by version desc) as rn,
lag(version) over (partition by formtype, item_code order by version desc) as prev_version
from vps_form
) t
where rn = 2
order by formtype, item_code, version;
SQLFiddle:http://sqlfiddle.com/#!4/2bd0f/2