【发布时间】:2021-11-01 13:06:03
【问题描述】:
我想和sql做朋友真的很难。请帮忙!
我有包含 3 年客户主记录的历史记录表。
表格如下所示:
表 A:
| ID | Name | Number|Date(in Timestamp)|
|:--- |:----:|:-----:|-----------------:|
|123 | John | 101 |20210101 01:11:15 |
|123 | John | 102 |20210103 01:11:15 |
|123 | John | 103 |20210301 01:11:15 |
|123 | John | 104 |20210325 01:11:15 |
|123 | John | 105 |20210415 01:11:15 |
|123 | John | 106 |20210416 01:11:15 |
|124 | Mary | 201 |20210101 01:11:15 |
|124 | Mary | 202 |20210103 01:11:15 |
|124 | Mary | 203 |20210201 01:11:15 |
|124 | Mary | 204 |20210225 01:11:15 |
|124 | Mary | 204 |20210315 01:11:15 |
|124 | Mary | 205 |20210416 01:11:15 |
我需要知道每个客户在每个月底的记录是什么。
预期结果是:
| ID | Name | Number|Date |
|123 | John | 102 |20210131|
|123 | John | 104 |20210331|
|123 | John | 106 |20210430|
|124 | Mary | 202 |20210131|
|124 | Mary | 204 |20210228|
|124 | Mary | 204 |20210331|
|124 | Mary | 205 |20210430|
我在 sql 下创建,但看起来我不能使用 substr 作为时间戳。 有没有其他方法可以做到这一点?非常感谢任何帮助!
select * from (select t1.id, t1.name, t1.number, t1.date,
ROW_NUMBER() over (partition by substr(date,1,6) order by date desc) as Rowrank
from tableA t1)sub where Rowrank = 1
【问题讨论】:
-
样本数据很好,但您也应该指定预期的结果。
-
感谢您的评论!我编辑了它。
-
@Jojo10478,请查看我的回答。
标签: sql database teradata teradatasql rdbms