如何写这个sql语句 _Oracle数据库管理_ITPUB论坛

Posted on

如何写这个sql语句 _Oracle数据库管理_ITPUB论坛-it168旗下专业技术社区

  • 用户名
  • UID
  • Email

登录 后使用快捷导航 没有帐号?注册

ITPUB论坛

用户名 自动登录 找回密码 密码 登录 注册

QQ登录

只需一步,快速开始

快捷导航

ITPUB论坛 论坛 ≡ 数据库技术 ≡ Oracle数据库管理 如何写这个sql语句?

分享到 转发到新浪微博 转贴到开心网 转贴到淘宝 转帖到人人网 转贴到推特 转贴到Facebook

查看: 9463|回复: 26 收藏 打印 上一主题 下一主题

如何写这个sql语句? [复制链接]

xallan

xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28

查看详细资料 IP卡 狗仔卡

注册会员

一般会员

精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1

授权会员
日期:2005-10-30 17:05:33

发表于 2003-2-20 22:06:25 |只看该作者 |倒序浏览

表dept, emp 要得到如下结果

deptno, dname, employees

10, accounting, clark;king;miller 20, research, smith;adams;ford;scott;jones 30, sales, allen;blake;martin;james;turners 也就是,每个dept的employee串起来作为一条记录返回。 怎么用一条sql语句完成? 3x 收藏收藏0 使用道具 举报 **

jaunt 当前离线 UID7292阅读权限100帖子12195精华贴数4技术排名68技术积分22560社区排名1177社区积分1370注册时间2002-2-27

查看详细资料 IP卡 狗仔卡

版主

版主

精华贴数4技术积分22560社区积分1370注册时间2002-2-27 论坛徽章:13

ITPUB元老
日期:2005-02-28 12:57:002011新春纪念徽章
日期:2011-01-25 15:42:562011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:41:01会员2006贡献徽章
日期:2006-04-17 13:46:34管理团队2006纪念徽章
日期:2006-04-16 22:44:45授权会员
日期:2005-10-30 17:05:33管理团队成员
日期:2011-05-07 01:45:08

发表于 2003-2-21 08:45:37 |只看该作者

Sorry,没看清题目,给了个错答案。:P 使用道具 举报 **

xallan

xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28

查看详细资料 IP卡 狗仔卡

注册会员

一般会员

精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1

授权会员
日期:2005-10-30 17:05:33

发表于 2003-2-21 09:00:29 |只看该作者

我想到了一个办法,用function,可以解决这个问题。但是,如果只用sql,是不是无法实现这种功能? 使用道具 举报 **

riosinph 当前离线 UID14302阅读权限10帖子4898精华贴数1技术排名1505技术积分1661社区排名519社区积分4324注册时间2002-6-21

查看详细资料 IP卡 狗仔卡

注册会员

New Human

精华贴数1技术积分1661社区积分4324注册时间2002-6-21 论坛徽章:2

授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34

发表于 2003-2-21 09:26:47 |只看该作者

select dept.deptno, dept.dname, emp.employee from dept,emp where instr(dept.employees,emp.employee)>0 ......... 使用道具 举报 **

xallan

xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28

查看详细资料 IP卡 狗仔卡

注册会员

一般会员

精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1

授权会员
日期:2005-10-30 17:05:33

发表于 2003-2-21 11:27:20 |只看该作者

不能不承认,还是老外厉害。 我在otn上也问了同样的问题。 很快有人说用plsql写个存储过程,后来我又问纯粹用sql行不行,有个牛人很快回答了: Well if you have a thoretical maximum, which I would assume you would given the legibility of listing hundreds of employees in the way you describe then yes. But the SQL needs to use the LAG function for each employee, hence a hundred emps a hundred LAGs, so kind of bulky. This example uses a max of 6, and would need more cut n pasting to do more than that. SQL> select deptno, dname, emps 2 from ( 3 select d.deptno, d.dname, rtrim(e.ename ||', '|| 4 lead(e.ename,1) over (partition by d.deptno 5 order by e.ename) ||', '|| 6 lead(e.ename,2) over (partition by d.deptno 7 order by e.ename) ||', '|| 8 lead(e.ename,3) over (partition by d.deptno 9 order by e.ename) ||', '|| 10 lead(e.ename,4) over (partition by d.deptno 11 order by e.ename) ||', '|| 12 lead(e.ename,5) over (partition by d.deptno 13 order by e.ename),', ') emps, 14 row_number () over (partition by d.deptno 15 order by e.ename) x 16 from emp e, dept d 17 where d.deptno = e.deptno 18 ) 19 where x = 1 20 / DEPTNO DNAME EMPS


 10 ACCOUNTING  CLARK, KING, MILLER
 20 RESEARCH    ADAMS, FORD, JONES, ROONEY, SCOTT, SMITH
 30 SALES       ALLEN, BLAKE, JAMES, MARTIN, TURNER, WARD

打算踏踏实实看看书. 使用道具 举报 **

rain11er 当前离线 UID15894阅读权限100帖子872精华贴数4技术排名915技术积分2504社区排名3702社区积分186注册时间2002-7-9

查看详细资料 IP卡 狗仔卡

版主

无头衔

精华贴数4技术积分2504社区积分186注册时间2002-7-9 论坛徽章:44

咸鸭蛋
日期:2011-09-14 08:46:372011新春纪念徽章
日期:2011-01-25 15:41:012010广州亚运会纪念徽章:自行车
日期:2011-01-05 12:55:012010广州亚运会纪念徽章:跆拳道
日期:2010-11-16 19:05:232010广州亚运会纪念徽章:手球
日期:2010-10-19 22:02:342010世博会纪念徽章
日期:2010-10-05 15:10:582010世博会纪念徽章
日期:2010-08-08 20:44:572010年世界杯参赛球队:丹麦
日期:2010-08-05 21:25:402010年世界杯参赛球队:塞尔维亚
日期:2010-06-11 15:41:582010年世界杯参赛球队:阿根廷
日期:2010-06-07 12:53:082011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:15

发表于 2003-2-21 12:38:26 |只看该作者

peifu,peifu 使用道具 举报 **

nyfor

nyfor 当前离线 UID4613阅读权限100帖子5403精华贴数8技术排名168技术积分10935社区排名1592社区积分824注册时间2002-1-6

查看详细资料 IP卡 狗仔卡

版主

精华贴数8技术积分10935社区积分824注册时间2002-1-6 论坛徽章:57

生肖徽章2007版:羊
日期:2008-11-14 14:42:19鲜花蛋
日期:2011-05-10 13:02:48紫蛋头
日期:2011-05-10 13:03:01灰彻蛋
日期:2011-05-10 13:03:12迷宫蛋
日期:2011-05-10 13:03:40蛋疼蛋
日期:2011-05-10 13:03:56复活蛋
日期:2011-05-10 13:04:092010广州亚运会纪念徽章:三项全能
日期:2011-05-19 21:32:30复活蛋
日期:2011-08-06 08:59:05茶鸡蛋
日期:2011-05-10 13:02:38咸鸭蛋
日期:2011-05-10 13:02:27生肖徽章2007版:牛
日期:2009-03-02 15:43:25

发表于 2003-2-21 13:01:54 |只看该作者

参见此帖做法,使用PL/SQL代码实现: http://www.itpub.net/showthread.php?threadid=96853 使用道具 举报 **

xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28

查看详细资料 IP卡 狗仔卡

注册会员

一般会员

精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1

授权会员
日期:2005-10-30 17:05:33

发表于 2003-2-21 13:27:24 |只看该作者

是的,写个function比较简单也挺好用。我最后也是用的function,而没有用那个lead函数,但他们还是挺牛。 使用道具 举报 **

xizi812

xizi812 当前离线 UID33612阅读权限10帖子37精华贴数0技术排名18274技术积分128社区排名30307社区积分3注册时间2003-1-3

查看详细资料 IP卡 狗仔卡

注册会员

一般会员

精华贴数0技术积分128社区积分3注册时间2003-1-3 论坛徽章:0

发表于 2003-2-22 10:07:58 |只看该作者

佩服!!牛!! 使用道具 举报 **

snowsun 当前离线 UID10589阅读权限10帖子297精华贴数0技术排名4121技术积分650社区排名5739社区积分80注册时间2002-4-26

查看详细资料 IP卡 狗仔卡

注册会员

笨牛

精华贴数0技术积分650社区积分80注册时间2002-4-26 论坛徽章:1

授权会员
日期:2005-10-30 17:05:33

发表于 2003-2-22 13:24:11 |只看该作者

谢天谢地,我正在为这个东东老火,没有想到楼主也遇到了. 扎扎实实的学了一招. 使用道具 举报 **

123下一页返回列表 发新帖 高级模式

B Color Image Link Quote Code Smilies

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

发表回复 回帖后跳转到最后一页

浏览过的版块

CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
积分 0, 距离下一级还需 积分 回顶部

≡ 数据库技术 ≡

希望本站内容对您有点用处,有什么疑问或建议请在后面留言评论
转载请注明作者(RobinChia)和出处 It so life ,请勿用于任何商业用途