0

我有一个基本查询,用于确定表中列的最大值:

select A.revenue_code_id, max(A.revenue_code_version) from rev_code_lookup A
group by A.revenue_code_id

这会产生约 580 行(整个表有超过 2400 行)。

这对我的查询结果很好,但我不知道如何根据最大值将 580 行插入到新的行中。我意识到这不是正确的代码,但我的想法看起来像这样:

select * into new_table from rev_code_lookup where max(revenue_code_version)
4

2 回答 2

2

您可以使用该row_number()功能来获取所需的数据。结合其他答案将结果插入表中(例如,我已经制作了几个额外的列):

Select
  x.revenue_code_id,
  x.revenue_code_version,
  x.update_timestamp,
  x.updated_by
From (
  Select
    revenue_code_id,
    revenue_code_version,
    update_timestamp,
    updated_by,
    row_number() over (partition by revenue_code_id Order By revenue_code_version Desc) as rn
  From
    revenue_code_lookup
) x
Where
  x.rn = 1

示例小提琴

于 2013-09-06T23:04:23.630 回答
1

无论您选择的复杂性如何,在另一个表中的插入始终是相同的方式:

insert into table
[unbeliavablycomplicatedselecthere]

所以在你的情况下:

insert into new_table
select A.revenue_code_id, max(A.revenue_code_version) from rev_code_lookup A
group by A.revenue_code_id

同样,如果您需要创建一个全新的表,请先执行以下操作:

CREATE TABLE new_table
AS
select A.revenue_code_id, max(A.revenue_code_version) from rev_code_lookup A
group by A.revenue_code_id

这将创建相应的表模式,然后您可以执行前面的查询来插入数据。

于 2013-09-06T22:34:41.527 回答