我有一个包含250行的表SESSIONVARIABLES
。表格列是
USERGROUP, ID, DESCRIPTION
我想创建一个SELECT
语句(在INSERT
中使用SESSIONVARIABLES
),为每个不同的USERGROUP
返回一行(将有13个) ID为当前最大值加上每行递增的值
理想情况下像
251 | UserGroup1
252 | UserGroup9
253 | UserGroup25
254 | UserGroup33
255 | UserGroup44
256 | UserGroup100
依旧......
答案 0 :(得分:3)
从当前的最大ID:
开始运行select
max(USERGROUP),
row_number() over (order by USERGROUP) + (select max(id) from SESSIONVARIABLES)
from SESSIONVARIABLES
group by USERGROUP
答案 1 :(得分:1)
下面的代码计算当前表的最大值,然后使用ROW_NUMBER确定下一个连续的id值。
DECLARE @SessionVariables TABLE (USERGROUP VARCHAR(100), ID INT, DESCRIPTION VARCHAR(100))
INSERT @SessionVariables VALUES
('UserGroup1', 250, NULL),
('UserGroup9', 249, NULL),
('UserGroup25', 248, NULL),
('UserGroup33', 247, NULL),
('UserGroup44', 246, NULL),
('UserGroup100', 245, NULL)
--INSERT @SessionVariables (ID, USERGROUP)
SELECT
MaxID.ID + ROW_NUMBER() OVER (ORDER BY SV.USERGROUP) AS [ID],
SV.USERGROUP
FROM @SessionVariables SV
CROSS JOIN (SELECT MAX(ID) FROM @SessionVariables) MaxID (ID)
GROUP BY
SV.USERGROUP,
MaxID.ID
这会产生输出:
ID USERGROUP
-------------------- ------------------
251 UserGroup1
252 UserGroup100
253 UserGroup25
254 UserGroup33
255 UserGroup44
256 UserGroup9