我有一个包含第1组,第2组和日期字段的表。
如果我运行此查询,我会得到以下结果:
SELECT
[group1]
,[group2]
,[date]
,ROW_NUMBER() over (PARTITION by [group1] order by [date]) as ord
FROM [dev_DP].[dbo].[myTable]
+--------+--------+-------------------------+-----+
| group1 | group2 | date | ord |
+--------+--------+-------------------------+-----+
| dan | alarm | 2014-05-14 12:00:00.000 | 1 |
| dan | snooze | 2014-05-14 12:30:00.000 | 2 |
| dan | snooze | 2014-05-14 12:50:00.000 | 3 |
| jim | snooze | 2014-05-14 11:00:00.000 | 1 |
| jim | snooze | 2014-05-14 12:45:00.000 | 2 |
| jim | alarm | 2014-05-14 13:45:00.000 | 3 |
+--------+--------+-------------------------+-----+
我想添加另一列,然后根据组1和组2字段向表中添加行号,但仅保留组1的日期顺序。我想要的结果如下:
+--------+--------+---------------------+-----+------+
| group1 | group2 | date | ord | ord2 |
+--------+--------+---------------------+-----+------+
| dan | alarm | 2014-05-14 12:00:00 | 1 | 1 |
| dan | snooze | 2014-05-14 12:30:00 | 2 | 1 |
| dan | snooze | 2014-05-14 12:50:00 | 3 | 2 |
| jim | snooze | 2014-05-14 11:00:00 | 1 | 1 |
| jim | snooze | 2014-05-14 12:45:00 | 2 | 2 |
| jim | alarm | 2014-05-14 13:45:00 | 3 | 1 |
+--------+--------+---------------------+-----+------+
我该怎么做?
由于 丹
答案 0 :(得分:0)
SELECT
[group1]
,[group2]
,[date]
,ROW_NUMBER() over (PARTITION by [group1] order by [date]) as ord1
,ROW_NUMBER() over (PARTITION by [group1], [group2] order by [date]) as ord2
FROM [dev_DP].[dbo].[myTable]
答案 1 :(得分:0)
如果我改变这些条款:
SELECT
[group1]
,[group2]
,[date]
,ROW_NUMBER() over (PARTITION by [group1], [group2] order by [date]) as ord2
,ROW_NUMBER() over (PARTITION by [group1] order by [date]) as ord1
FROM [dev_DP].[dbo].[myTable]
我认为这给了我想要的结果,但它没有...如果我添加另一条记录你可以看到错误。
+--------+--------+-------------------------+------+------+
| group1 | group2 | date | ord2 | ord1 |
+--------+--------+-------------------------+------+------+
| dan | alarm | 2014-05-14 12:00:00.000 | 1 | 1 |
| dan | snooze | 2014-05-14 12:30:00.000 | 1 | 2 |
| dan | snooze | 2014-05-14 12:50:00.000 | 2 | 3 |
| dan | alarm | 2014-05-14 13:00:00.000 | 2 | 4 |
| jim | snooze | 2014-05-14 11:00:00.000 | 1 | 1 |
| jim | snooze | 2014-05-14 12:45:00.000 | 2 | 2 |
| jim | alarm | 2014-05-14 13:45:00.000 | 1 | 3 |
+--------+--------+-------------------------+------+------+