Oracle SQL:显示按列分组的行的行号

时间:2019-07-11 14:45:46

标签: sql oracle

我有以下数据集:

enter image description here

我想要这个结果:

enter image description here

我尝试使用DENSE_RANK,但是速度很快。我已经阅读了一些堆栈溢出页面,但由于无法进行任何操作,现在正盯着一张空白纸。

有什么想法吗?指针?

编辑

到目前为止,这似乎还可以-有明显的问题吗?

SELECT Person_id,
    PERSON_NUMBER,
    EFFECTIVE_START_DATE,
    EFFECTIVE_END_DATE,
    ROW_NUMBER() OVER (PARTITION BY Person_id ORDER BY Person_id) YEAH
FROM PER_ALL_PEOPLE_F 

1 个答案:

答案 0 :(得分:0)

如果我的假设正确,那么您想按时间顺序获取个人的记录。

SELECT
    PERSON_ID,
    PERSON_NUMBER,
    EFFECTIVE_START_DATE,
    EFFECTIVE_END_DATE,
    ROW_NUMBER() OVER(
        PARTITION BY PERSON_ID
        ORDER BY
            EFFECTIVE_START_DATE
    ) YEAH
FROM
    <YOUR TABLE>
ORDER BY PERSON_ID, YEAH

注意: 我知道这张桌子,甚至在上面工作。 请编辑您的问题,然后从问题中删除表名。在WEB上显示表名是一个坏习惯。列名很好,但表名不是。