选择使用max()

时间:2013-09-06 22:30:31

标签: sql sql-server insert max

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

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

这导致~580行(整个表有超过2400行)。

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

select * into new_table from rev_code_lookup where max(revenue_code_version)

2 个答案:

答案 0 :(得分: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

Example Fiddle

答案 1 :(得分: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

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