在首次出现唯一值

时间:2015-10-13 12:05:19

标签: sql ms-access

我有一个表格,我想添加一个列,在第一次出现数据集中记录的给定值时显示1。

所以,例如,如果我使用ID字段作为查找唯一事件的位置,我想要一个“FirstOccur”列(如下所示)在第一次出现时放置1数据集中的唯一ID值,只是忽略(保留为null)任何其他事件:

|  ID  |  FirstOccur  |
|------|--------------|
|  1   |      1       |
|  1   |              |
|  1   |              |
|  2   |      1       |
|  2   |              |
|  3   |      1       |
|  4   |      1       |
|  4   |              |

我有一个有效的两步法,首先应用一些排名sql,它会给我这样的东西:

|  ID  |  FirstOccur  |
|------|--------------|
|  1   |      1       |
|  1   |      2       |
|  1   |      3       |
|  2   |      1       |
|  2   |      2       |
|  3   |      1       |
|  4   |      1       |
|  4   |      2       |

..我只是应用一些更新SQL来清空任何高于1的值,以获得所需的结果。

我只是想知道是否有一种(更简单的)一击法。

1 个答案:

答案 0 :(得分:0)

假设您有创建日期或自动增加的ID或指定排序的内容,您可以执行以下操作:

update t
    set firstoccur = 1
    where creationdate = (select min(creationdate)
                          from t as t2
                          where t2.id = t.id 
                         );