找出记录 - 每年每个成员的前两个日期记录 - db2udb
find out the records - first two date records of each member of every year- db2udb
需要帮助 -
场景 - 我有一个 table 列的测试数据
memberid (varchar) ,codetype(varchar),effectivedate(datetime)
这个 table 有 20k 条记录 - 从 2015 年到 2021 年
我需要找出记录 - 每年每个成员的前两个日期记录 [只有 memberid 是唯一的)
例如
member id
codetype
effectivedate
123
ABC
1/2/2015
123
ABC
1/2/2015
123
ABC
8/15/2015
123
EFG
9/15/2015
123
EFG
2/15/2018
345
EFG
3/14/2018
345
EFG
3/17/2018
345
ABC
9/19/2020
456
EFG
12/20/2021
结果应该如下所示
member id
codetype
effectivedate
123
ABC
1/2/2015
123
ABC
1/2/2015
123
ABC
2/15/2018
345
EFG
3/14/2018
345
EFG
3/17/2018
345
ABC
9/19/2020
456
EFG
12/20/2021
尝试了很多方法,但到目前为止没有成功
试试这个
with u as
(select memberid, codetype, effectivedate,
row_number() over(partition by memberid, year(effectivedate) order by
memberid) as rownum
from testdata)
(select memberid, codetype, effectivedate from u
where rownum <= 2)
基本上你得到每条记录的行号按memberid分区和记录的年份,然后只保留rownum为1或2的记录。
需要帮助 - 场景 - 我有一个 table 列的测试数据
memberid (varchar) ,codetype(varchar),effectivedate(datetime)
这个 table 有 20k 条记录 - 从 2015 年到 2021 年 我需要找出记录 - 每年每个成员的前两个日期记录 [只有 memberid 是唯一的) 例如
member id | codetype | effectivedate |
---|---|---|
123 | ABC | 1/2/2015 |
123 | ABC | 1/2/2015 |
123 | ABC | 8/15/2015 |
123 | EFG | 9/15/2015 |
123 | EFG | 2/15/2018 |
345 | EFG | 3/14/2018 |
345 | EFG | 3/17/2018 |
345 | ABC | 9/19/2020 |
456 | EFG | 12/20/2021 |
结果应该如下所示
member id | codetype | effectivedate |
---|---|---|
123 | ABC | 1/2/2015 |
123 | ABC | 1/2/2015 |
123 | ABC | 2/15/2018 |
345 | EFG | 3/14/2018 |
345 | EFG | 3/17/2018 |
345 | ABC | 9/19/2020 |
456 | EFG | 12/20/2021 |
尝试了很多方法,但到目前为止没有成功
试试这个
with u as
(select memberid, codetype, effectivedate,
row_number() over(partition by memberid, year(effectivedate) order by
memberid) as rownum
from testdata)
(select memberid, codetype, effectivedate from u
where rownum <= 2)
基本上你得到每条记录的行号按memberid分区和记录的年份,然后只保留rownum为1或2的记录。