Sql 如何从表中的最大值自动递增我自己的结果列?

Sql 如何从表中的最大值自动递增我自己的结果列?,sql,sql-server,sql-server-2008,tsql,Sql,Sql Server,Sql Server 2008,Tsql,如何组合这两个值,以便无论第一个查询返回什么值,我都可以使用该值并从中自动递增,以某种方式组合这两个值(尝试嵌套它们,但不成功),还是需要 声明一个变量 获取我的最大id值 让我的变量等于这个 然后将该值/变量放在我的第二个语句中 像 select MAX (cast (id as numeric)) from table --whatever value it may return select (row_number () over (order by id)) as Number f

如何组合这两个值,以便无论第一个查询返回什么值,我都可以使用该值并从中自动递增,以某种方式组合这两个值(尝试嵌套它们,但不成功),还是需要

  • 声明一个变量
  • 获取我的最大id值
  • 让我的变量等于这个
  • 然后将该值/变量放在我的第二个语句中
  • select MAX (cast (id as numeric)) from table --whatever value it may return
    
    select 
    (row_number ()  over (order by id)) as Number from table  --will start at 1
    
    试试这个:

    select 
    (row_number ()  over (order by id) + (declared_max_value)) as Number from table
    
    或者这个:

    WITH CTE as
    (SELECT max(Field) FROM Table)
        SELECT WhatYouWant, cte.m FROM Table2
        INNER JOIN CTE ON 0=0
    
    试试这个:

    declare @maxValue int
    select @maxValue = select max(cast (id as integer)) from table
    
    declare @uaerystring varchar(max)
    select @queryString = 
    '(row_number ()  over (order by id) + '
    + @maxValue +
    ')as Number from table'
    Execute(@queryString)
    

    工作示例:

    你能举例说明你想要的结果是什么吗?例如,不管我的最大值是什么(未知),假设它是900,那么每一行都会从该值开始递增;如果返回了5行,则第1列(数字列)将显示-->901902904905COOL。。非常感谢!
    declare @maxValue int
    select @maxValue = select max(cast (id as integer)) from table
    
    declare @uaerystring varchar(max)
    select @queryString = 
    '(row_number ()  over (order by id) + '
    + @maxValue +
    ')as Number from table'
    Execute(@queryString)
    
    SELECT
        Seed.ID + ROW_NUMBER() OVER (order by T.ID) as Number,
        T.ID
    FROM
        T CROSS JOIN
        (SELECT MAX(ID) AS ID FROM T) AS Seed
    
    DECLARE @T Table (ID int , Value Varchar(20))
    INSERT INTO @T (ID, Value)
    VALUES (50, 'Value1'), (500, 'Value1'), (100, 'Value1'), (50, 'Value2'), (100, 'Value2'),(500, 'Value2')
    
    ;with CTE (Value, ID, rn)
    AS
    (
    SELECT Value, MAX(ID), rn = ROW_NUMBER() OVER (ORDER BY Value ASC)
    FROM 
    @T
    GROUP BY Value
    )
    SELECT * FROM CTE