oracle去重复的列的sql row_number() over( partition by)
2012-01-05 09:48
537 查看
with cte as( select t.base_group_id,t.base_task_agent_id,t.user_id,g.base_role_id,r.role_name,g.base_org_id,o.name_,t.ben_time,t.end_time from base_task_agent t,base_role r,base_organization o,base_group g,base_user u where u.user_id =756550 and u.user_id = t.user_id and t.base_group_id = g.base_group_id and g.base_role_id = r.role_id and g.base_org_id = o.org_id and t.end_time > to_Date('2012-01-05', 'yyyy-MM-dd') ) select * from ( select t.*,row_number() over (partition by base_group_id order by base_task_agent_id) rid from cte t ) a where rid=1
简单解释一下 with cte as() 括号内的内容 就是查询的sql 结果 其中包含重复数据,单纯的distinct无法解决 order by也不知怎么搞 于是用with as() 创建一个临时表 cte为临时表的名字
然后
select t.* ,row_number() over(partition by base_group_id order by base_task_agent_id) rid from cte t 这句sql的意思是 查询临时表cte 别名为t row_number() over(partition by 需要检索重复的列 order by 排序的列名) 别名为 rid form cte t
这时候查询就会获得一个rid列 如果base_group_id存在多条相同值就以1开始递增
select * from (↑) a where rid = 1 筛选rid为1 也就是base_group_id只出现一次的数据 这就是去重复了 高人指点 感谢
相关文章推荐
- Oracle使用row_number() over (partition order by)和DISTINCT去除重复记录
- oracle的“over partition by”的用法,over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。
- Oracle之row_number() / rank() / dense_rank() / over(partition order by)序列函数
- SQL中先分组再组内排序再输出的ROW_NUMBER() OVER(partition by..order by..)
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- SQL中分析函数ROW_NUMBER() OVER(PARTITION BY GRADEOBJECTID ORDER BY BG.GRADEDATE DESC)的用法!!!
- oracle 分析函数:ROW_NUMBER() OVER(PARTITION BY ID ORDER BY VERSION DESC)
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能优化
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能.
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能优化
- Oracle 分析函数row_number() over (partition by order by ) 的 Mysql的替代方法
- oracle 分组编号 ROW_NUMBER() OVER(PARTITION BY COLUMN ORDER BY COLUMN ) 的用法
- MYSQL-实现ORACLE- row_number() over(partition by ) 分组排序功能
- MYSQL-实现ORACLE 和SQLserver数据中- row_number() over(partition by ) 分组排序功能
- MYSQL-实现分组排序 对比 ORACLE 和SQLserver用 row_number() over(partition by ) 分组排序功能
- Oracle中row_number() over(partition by a order b asc,c desc)的应用
- 【Oracle】row_number() over(partition by )函数用法
- oracle SQL - 去除重复 ROW_NUMBER() OVER()
- Oracle中row_number() over(partition by xxx order by xxx)的用法