sql - 如果sql中的一个字段相同,如何过滤上一条记录
问题描述
我有如下记录:
ID Date Title User
1 2019-04-29 14:15:55.567 A 1222
2 2019-04-29 14:25:13.530 A 1222
3 2019-04-29 15:17:07.210 A 1222
4 2019-04-29 16:05:49.067 B 1048
5 2019-04-29 16:36:37.330 C 681
6 2019-04-29 16:37:16.250 C 681
7 2019-04-29 16:37:49.160 D 681
8 2019-04-29 16:38:48.803 C 681
我想用以前的记录检查每条记录,如果两者的标题相同,则忽略以前的记录。
我想看到这样的结果:
ID Date Title User
3 2019-04-29 15:17:07.210 A 1222
4 2019-04-29 16:05:49.067 B 1048
6 2019-04-29 16:37:16.250 C 681
7 2019-04-29 16:37:49.160 D 681
8 2019-04-29 16:38:48.803 C 681
解决方案
利用lag()
select * from
(
select *, lag(title) over(order by date desc) as prevtitle
from tablename
)A where prevtitle is null or title<>prevtitle
输出:
id dateval title userid
3 29/04/2019 15:17:07 A 1222
4 29/04/2019 16:05:49 B 1048
6 29/04/2019 16:37:16 C 681
7 29/04/2019 16:37:49 D 681
8 29/04/2019 16:38:48 C 681
推荐阅读
- sql-server - 计算发货时间超过 X 天的订单百分比的更好方法?
- unit-testing - Dart Future catchError 未在单元测试中调用
- python - Databricks pyspark,使用 header='false' 时 Dataframe.count() 和 Display(Dataframe) 的结果差异
- sql - 每个组的案例陈述
- firebase - Firebase auth v2 -> v3 迁移代码崩溃
- python - Pythonanywhere Django 应用程序不适用于 MySql
- webpack - Webpack 无法编译错误。babel-core 版本问题
- firebase-authentication - Firebase Analytics:它是否在 iOS 上使用 IDFA?
- java - “散列”比“线性”搜索更有效吗?
- flutter - 无法使可滚动