ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
查看: 7690|回复: 15

一列中相同的值,怎么只显示一次

[复制链接]
论坛徽章:
9
马上有车
日期:2014-04-16 17:19:192013年新春福章
日期:2013-02-25 14:51:24灰彻蛋
日期:2013-02-28 17:57:18蜘蛛蛋
日期:2013-03-06 17:16:15茶鸡蛋
日期:2013-03-26 17:32:46雪佛兰
日期:2013-11-26 10:47:53优秀写手
日期:2014-01-22 06:00:12慢羊羊
日期:2015-03-04 14:53:332015年新春福章
日期:2015-03-06 11:58:39
跳转到指定楼层
1#
发表于 2013-3-4 15:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
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;

查询结果:

OB_IDOB_NAME
A001A001-a
A001A001-b
A001A001-c
A001A001-d
A002A002-a
A002A002-b
A002A002-c
A002A002-d

如何实现下面的查询结果:

OB_IDOB_NAME
A001A001-a
 A001-b
 A001-c
 A001-d
A002A002-a
 A002-b
 A002-c
 A002-d
论坛徽章:
396
兰博基尼
日期:2013-12-15 15:36:432014年世界杯参赛球队: 洪都拉斯
日期:2014-06-25 08:25:55itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07懒羊羊
日期:2015-02-21 22:03:31懒羊羊
日期:2015-03-04 14:52:11
2#
发表于 2013-3-4 16:01 | 只看该作者
Sqlplus有个break功能
否则要用分析函数

使用道具 举报

回复
论坛徽章:
10
蛋疼蛋
日期:2013-01-09 17:30:51喜羊羊
日期:2015-05-09 16:41:552015年新春福章
日期:2015-03-06 11:58:39暖羊羊
日期:2015-03-04 14:53:00马上有对象
日期:2014-02-18 16:44:082014年新春福章
日期:2014-02-18 16:44:08夏利
日期:2014-02-15 15:19:052013年新春福章
日期:2013-02-25 14:51:24奥运会纪念徽章:网球
日期:2013-01-30 16:45:43弗兰奇
日期:2017-06-25 21:17:45
3#
发表于 2013-3-4 16:18 | 只看该作者
select decode(row_number() over(partition by ob_id order by ob_name),
              1,
              ob_id) ob_id,
       ob_name
  from test t;

使用道具 举报

回复
论坛徽章:
2
蛋疼蛋
日期:2013-01-24 16:02:032013年新春福章
日期:2013-02-25 14:51:24
4#
发表于 2013-3-4 17:54 | 只看该作者
恕我才疏学浅,我用了两个子查询
SELECT CASE WHEN m.rn=m.rn1 THEN NULL
     ELSE m.ob_id END ob_id, m.ob_name FROM
(SELECT d.ob_id,d.ob_name,rn,LAG(d.rn) OVER(ORDER BY d.ob_id) rn1 FROM
(SELECT t.ob_id,t.ob_name,dense_RANK() OVER( ORDER BY t.ob_id) rn FROM  TEST t) d) m

使用道具 举报

回复
论坛徽章:
2
蛋疼蛋
日期:2013-01-24 16:02:032013年新春福章
日期:2013-02-25 14:51:24
5#
发表于 2013-3-4 17:56 | 只看该作者
哦,三楼的做法更优,很好,学习了。

使用道具 举报

回复
论坛徽章:
127
ITPUB元老
日期:2007-07-04 17:27:50会员2007贡献徽章
日期:2007-09-26 18:42:10现任管理团队成员
日期:2011-05-07 01:45:08优秀写手
日期:2015-01-09 06:00:14版主7段
日期:2015-07-16 02:10:00弗兰奇
日期:2018-03-15 17:57:08
6#
发表于 2013-3-4 20:39 来自手机 | 只看该作者
本帖最后由 bell6248 于 2013-3-4 20:40 编辑

这个问题很老了, 哈哈!!!

select decode(lag(ob_id) over(partion by ob_id order by ob_name), ob_id, null, ob_name) ob_id,
             ob_name
from t;

使用道具 举报

回复
论坛徽章:
17
优秀写手
日期:2014-07-10 06:00:122015年新春福章
日期:2015-03-04 14:53:16马上加薪
日期:2014-12-18 01:09:30祖国65周年纪念徽章
日期:2014-09-27 08:49:22马上加薪
日期:2014-04-20 23:04:51马上有对象
日期:2014-04-19 23:32:33马上有车
日期:2014-03-29 23:05:24马上有房
日期:2014-07-16 11:59:32奔驰
日期:2013-09-06 14:36:15红旗
日期:2013-08-28 14:56:28
7#
发表于 2013-3-4 21:12 | 只看该作者
对啊 break啊 set ob_id break on

使用道具 举报

回复
论坛徽章:
9
ITPUB 11周年纪念徽章
日期:2012-10-31 14:48:002013年新春福章
日期:2013-02-25 14:51:24奥运纪念徽章
日期:2013-05-20 09:57:09马上有车
日期:2014-03-30 11:41:45大众
日期:2013-09-26 08:56:23三菱
日期:2013-11-09 10:48:19凯迪拉克
日期:2013-11-28 09:17:19红旗
日期:2013-12-16 12:38:48雪佛兰
日期:2013-12-17 09:11:49
8#
发表于 2013-3-4 21:35 | 只看该作者
来个笨的
select decode(t1.ob_name, v.name, t1.ob_id, ''), t1.ob_name
  from (select * from test t where rowid in (select min(rowid) from test  group by ob_id,ob_name)) t1
  join (select t.ob_id id, min(t.ob_name) name from test t group by t.ob_id) v on v.id = t1.ob_id
order by t1.ob_id, t1.ob_name;

使用道具 举报

回复
论坛徽章:
34
ITPUB元老
日期:2013-03-09 11:58:07雪铁龙
日期:2013-10-10 22:18:31本田
日期:2013-10-21 16:31:35日产
日期:2013-11-04 17:09:12三菱
日期:2013-10-30 16:46:52一汽
日期:2013-11-01 19:41:482014年新春福章
日期:2014-02-18 16:44:08马上有对象
日期:2014-02-18 16:44:08马上有对象
日期:2014-04-04 09:23:51优秀写手
日期:2014-03-11 06:00:13
9#
发表于 2013-3-5 00:34 | 只看该作者

使用道具 举报

回复
论坛徽章:
8
蜘蛛蛋
日期:2013-02-21 09:06:42迷宫蛋
日期:2013-05-25 21:05:58马自达
日期:2013-10-24 17:08:46兰博基尼
日期:2013-11-17 21:05:35现代
日期:2013-11-22 11:21:53福特
日期:2014-01-28 21:36:132014年新春福章
日期:2014-02-18 16:49:31马上有钱
日期:2014-02-18 16:49:31
10#
发表于 2013-3-5 10:44 | 只看该作者
再一次觉得 剑破冰山 真不错,哈~
推荐楼主也看看~

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档 |
  | | |
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
 北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表