【发布时间】:2014-07-04 11:15:09
【问题描述】:
我有一个包含第 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 |
+--------+--------+---------------------+-----+------+
我该怎么做?
谢谢 丹
【问题讨论】:
-
如果您在 SSMS 中执行查询,请将结果输出设置更改为“结果到文本”并将结果粘贴到您的代码之后。照原样,这在视觉上非常难以解析。
-
对不起 - 应该先检查一下。谢谢。
-
你确定第二个结果是你想要的吗?我无法在
ord2的值中发现明显的模式。 -
是的 - 我敢肯定 - 所以我想获得给定组 1 的“警报”序列中的第一个和“打盹”序列中的第一个。要做到这一点,必须将第 1 组分组,然后按日期订购。
标签: sql-server tsql partition