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