在块中分配递增的值

Assigning increasing values in blocks

我有一个 table 具有以下特征: RecordId-唯一标识符 日期、体重和对照(如果体重 >10000 则为 1 否则为 0)。

RecordID    Date    Weight  Control
1           16/07/2014  12200   1
2           16/07/2014  0       0
3           16/07/2014  5720    0
4           16/07/2014  11060   1
5           16/07/2014  15940   1
6           16/07/2014  16200   1
7           16/07/2014  16080   1
8           16/07/2014  16080   1
9           16/07/2014  16080   1
10          18/07/2014  16080   1
11          18/07/2014  3720    0
12          18/07/2014  4500    0
13          18/07/2014  23800   1
14          18/07/2014  40700   1
15          18/07/2014  40700   1

我想添加一个新列(组),它为每组 0 和 1 分配相同的递增数字,如下所示:

RecordID    Date    Weight  Control Group
1            16/07/2014 12200   1   1
2            16/07/2014 0       0   2
3            16/07/2014 5720    0   2
4            16/07/2014 11060   1   3
5            16/07/2014 15940   1   3
6            16/07/2014 16200   1   3
7            16/07/2014 16080   1   3
8            16/07/2014 16080   1   3
9            16/07/2014 16080   1   3
10           18/07/2014 16080   1   3
11           18/07/2014 3720    0   4
12           18/07/2014 4500    0   4
13           18/07/2014 23800   1   5
14           18/07/2014 40700   1   5
15           18/07/2014 40700   1   5

请帮我解开这个谜题。

我假设您使用的是 Microsoft Transact SQL。

这是一个使用 CASE WHEN 语句来识别 Control 列中的更改的解决方案。

我在下面的 T-SQL.

中用原始数据(RecordID、Date、Weight 和 Control)将 table 命名为 'Flori'
SELECT      f.RecordID, f.Date, f.Weight, f.Control, 
            SUM(x.Change) OVER (ORDER BY f.RecordId) + 1 as [Group]
FROM 
            (SELECT RecordID, 
                (SELECT 
                    CASE 
                        WHEN Control != 
                             (SELECT Control FROM Flori WHERE RecordId = f.RecordID - 1)  
                            THEN 1 
                        ELSE 0 
                    END
                ) as Change
            FROM Flori as f) as x
INNER JOIN  Flori f on x.RecordID = f.RecordID
GROUP BY    f.RecordID, f.Date, f.Weight, f.Control, x.Change