SQL 更新 5 条记录的片段
SQL Update Segment of 5 Records
我有 table 个姓名,我想生成另一列 "Group",每 5 条记录增加 1。下面是所需输出的示例。
Name Group
Joe 1
Frank 1
Susan 1
Tom 1
Kim 1
Mike 2
John 2
Henry 2
Rick 2
Quinn 2
你可以试试这样的
select a.name,
case when (a.myrow%5=0) then 5 else a.myrow%5 end as group
from
(select name,row_number() over (order by name) as myrow from YourTable)a
另一种方法
Create table #tmpNames
(
Name1 varchar(100)
)
Insert INTO #tmpNames
(Name1)
VALUES
('Joe'),
('Frank'),
('Susan'),
('Tom'),
('Kim'),
('Mike'),
('John'),
('Henry'),
('Rick'),
('Quinn')
Select Name1
,ROUND(rowCnt / 6, 0, 1 ) + 1 as 'grp'
From (
Select
Name1
,ROW_NUMBER() over (order by Name1) as 'rowCnt'
From #tmpNames
) a
创建带行号的 CTE 会有所帮助
;WITH cte AS
(
SELECT
Name,
ROW_NUMBER() OVER (ORDER BY Name) AS RowNum
FROM YourTable
)
SELECT
Name,
(RowNum - 1) / 5 + 1 AS [Group]
FROM cte
我有 table 个姓名,我想生成另一列 "Group",每 5 条记录增加 1。下面是所需输出的示例。
Name Group
Joe 1
Frank 1
Susan 1
Tom 1
Kim 1
Mike 2
John 2
Henry 2
Rick 2
Quinn 2
你可以试试这样的
select a.name,
case when (a.myrow%5=0) then 5 else a.myrow%5 end as group
from
(select name,row_number() over (order by name) as myrow from YourTable)a
另一种方法
Create table #tmpNames
(
Name1 varchar(100)
)
Insert INTO #tmpNames
(Name1)
VALUES
('Joe'),
('Frank'),
('Susan'),
('Tom'),
('Kim'),
('Mike'),
('John'),
('Henry'),
('Rick'),
('Quinn')
Select Name1
,ROUND(rowCnt / 6, 0, 1 ) + 1 as 'grp'
From (
Select
Name1
,ROW_NUMBER() over (order by Name1) as 'rowCnt'
From #tmpNames
) a
创建带行号的 CTE 会有所帮助
;WITH cte AS
(
SELECT
Name,
ROW_NUMBER() OVER (ORDER BY Name) AS RowNum
FROM YourTable
)
SELECT
Name,
(RowNum - 1) / 5 + 1 AS [Group]
FROM cte