我有一张具有以下特征的表格: RecordId-唯一标识符 日期,重量和对照(如果重量,则为1,否则为10000)。
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
我想添加一个新列(Group),为每个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
请帮我解决这个难题。
答案 0 :(得分:0)
我假设您正在使用Microsoft Transact SQL。
这是使用CASE WHEN语句识别“控制”列中的更改的解决方案。
我已将表格与原始数据(RecordID,日期,重量和控制)命名为' Flori'在下面的T-SQL中。
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