Oracle查询结果中:一列中相同的值或一列中重复的值,只显示一次
2014-12-19 10:34
429 查看
http://www.itpub.net/thread-1768915-1-1.html
问题:
CREATE TABLE test(
ob_id VARCHAR(32),
ob_name VARCHAR(32)
);
INSERT INTO test VALUES('A001','A001-a');
INSERT INTO test VALUES('A001','A001-b');
INSERT INTO test VALUES('A001','A001-c');
INSERT INTO test VALUES('A001','A001-d');
INSERT INTO test VALUES('A002','A002-a');
INSERT INTO test VALUES('A002','A002-b');
INSERT INTO test VALUES('A002','A002-c');
INSERT INTO test VALUES('A002','A002-d');
COMMIT;
select * from test;查询结果:
如何实现下面的查询结果?:
实现sql:
--select row_number() over(partition by ob_id order by ob_name) from test;
--row_number方法
select decode(row_number() over(partition by ob_id order by ob_name),
1,
ob_id) ob_id,
ob_name
from test t;
--lag或lead方法
select decode(lag(ob_id) over(partition by ob_id order by ob_name),
ob_id,
null,
ob_id) ob_id,
ob_name
from test t;
问题:
CREATE TABLE test(
ob_id VARCHAR(32),
ob_name VARCHAR(32)
);
INSERT INTO test VALUES('A001','A001-a');
INSERT INTO test VALUES('A001','A001-b');
INSERT INTO test VALUES('A001','A001-c');
INSERT INTO test VALUES('A001','A001-d');
INSERT INTO test VALUES('A002','A002-a');
INSERT INTO test VALUES('A002','A002-b');
INSERT INTO test VALUES('A002','A002-c');
INSERT INTO test VALUES('A002','A002-d');
COMMIT;
select * from test;查询结果:
OB_ID | OB_NAME |
A001 | A001-a |
A001 | A001-b |
A001 | A001-c |
A001 | A001-d |
A002 | A002-a |
A002 | A002-b |
A002 | A002-c |
A002 | A002-d |
OB_ID | OB_NAME |
A001 | A001-a |
A001-b | |
A001-c | |
A001-d | |
A002 | A002-a |
A002-b | |
A002-c | |
A002-d |
--select row_number() over(partition by ob_id order by ob_name) from test;
--row_number方法
select decode(row_number() over(partition by ob_id order by ob_name),
1,
ob_id) ob_id,
ob_name
from test t;
--lag或lead方法
select decode(lag(ob_id) over(partition by ob_id order by ob_name),
ob_id,
null,
ob_id) ob_id,
ob_name
from test t;
相关文章推荐
- 采用sqltool进行oracle查询操作,查出的结果显示出来是乱码
- oracle在查询结果中附加一列的实现方法
- Oracle查询一批数据,某字段的内容有重复数据,怎样取相同的记录中时间最近的一条
- oracle树结构查询结果 树结构打印显示
- oracle 将查询结果纵向横向显示。
- oracle -查询结果优化显示
- SQL语句:一种连接本表2个查询结果的复杂sql语句、一种查找一列有重复值的语句
- oracle 将查询结果中的一列多个结果合并为一个字符串 并以逗号格开
- oracle分页查询结果集重复问题&解决方法
- oracle查询结果中wmsys.wm_concat组合一列多行结果,以及每行中某些列的组合结果
- ORACLE之储存过程实现查询结果分页显示
- oracle 下 时间戳 timeStamp 如何将查询结果显示为普通日期类型
- 多表查询,字段相同,结果一同显示
- Oracle查询每个员工领导名称,要求显示结果为:员工号,员工姓名 员工领导名
- 数据库查询结果以逗号隔开一列显示
- oracle一列查询结果,用,拼接成一个字符串
- oracle 查询结果列转行---查询结果横向显示
- Oracle树形查询 ,结果显示一行
- oracle SQL 如何显示group by 聚合结果count 为0的查询
- 如何将多个SQL查询统计结果一次显示出来