如何写这个sql语句 _Oracle数据库管理_ITPUB论坛
Posted on如何写这个sql语句 _Oracle数据库管理_ITPUB论坛-it168旗下专业技术社区
- 用户名
- UID
只需一步,快速开始
- 门户
- 论坛BBS
- 空间
- 索引树
- 手机版
- 读书
- 文库
- 竞拍Auction
- 商店
- 排行榜Ranklist
- 版主团
- DB2索引树
- MS Sql Sever索引树
- Mysql索引树
- Sybase索引树
- BI索引树
- 项目管理索引树
- 帖子
- 用户
ITPUB论坛 › 论坛 › ≡ 数据库技术 ≡ › Oracle数据库管理 › 如何写这个sql语句?
查看: 9463|回复: 26 收藏
如何写这个sql语句? [复制链接]
xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28
一般会员
精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1
发表于 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
版主
精华贴数4技术积分22560社区积分1370注册时间2002-2-27 论坛徽章:13
发表于 2003-2-21 08:45:37 |只看该作者
Sorry,没看清题目,给了个错答案。:P 使用道具 举报 **
- 显身卡 *
xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28
一般会员
精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1
发表于 2003-2-21 09:00:29 |只看该作者
我想到了一个办法,用function,可以解决这个问题。但是,如果只用sql,是不是无法实现这种功能? 使用道具 举报 **
riosinph 当前离线 UID14302阅读权限10帖子4898精华贴数1技术排名1505技术积分1661社区排名519社区积分4324注册时间2002-6-21
New Human
精华贴数1技术积分1661社区积分4324注册时间2002-6-21 论坛徽章:2
发表于 2003-2-21 09:26:47 |只看该作者
select dept.deptno, dept.dname, emp.employee from dept,emp where instr(dept.employees,emp.employee)>0 ......... 使用道具 举报 **
- 显身卡 *
xallan 当前离线 UID4218阅读权限10帖子79精华贴数0技术排名12897技术积分194社区排名20989社区积分6注册时间2001-12-28
一般会员
精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1
发表于 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
无头衔
精华贴数4技术积分2504社区积分186注册时间2002-7-9 论坛徽章:44
发表于 2003-2-21 12:38:26 |只看该作者
- 显身卡 *
nyfor 当前离线 UID4613阅读权限100帖子5403精华贴数8技术排名168技术积分10935社区排名1592社区积分824注册时间2002-1-6
精华贴数8技术积分10935社区积分824注册时间2002-1-6 论坛徽章:57
发表于 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
一般会员
精华贴数0技术积分194社区积分6注册时间2001-12-28 论坛徽章:1
发表于 2003-2-21 13:27:24 |只看该作者
是的,写个function比较简单也挺好用。我最后也是用的function,而没有用那个lead函数,但他们还是挺牛。 使用道具 举报 **
- 显身卡 *
xizi812 当前离线 UID33612阅读权限10帖子37精华贴数0技术排名18274技术积分128社区排名30307社区积分3注册时间2003-1-3
一般会员
精华贴数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
笨牛
精华贴数0技术积分650社区积分80注册时间2002-4-26 论坛徽章:1
发表于 2003-2-22 13:24:11 |只看该作者
谢天谢地,我正在为这个东东老火,没有想到楼主也遇到了. 扎扎实实的学了一招. 使用道具 举报 **
- 显身卡 * IT168文库精选文档推荐 一条SQL语句的优化过程.doc VC++6.0访问Oracle数据库技术.pdf oracle新手必备17.ppt 用DBMSDDL包重新编译PL.doc 第十四章 数据库管理员.pdf
B Color Image Link Quote Code Smilies
发表回复 回帖后跳转到最后一页
浏览过的版块
CopyRight 1999-2011 itpub.net All Right Reserved. 北京皓辰网域网络信息技术有限公司版权所有 联系我们 网站律师 隐私政策 知识产权声明
京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:1101082001 广播电视节目制作经营许可证:编号(京)字第1149号
积分 0, 距离下一级还需 积分 回顶部
- Oracle数据库管理
- Oracle高可用
- Oracle开发
- Oracle入门与认证
- Oracle专题深入讨论
- Oracle新技术/11gR2
- Oracle电子文档
- Oracle Fusion中间件
- IBM DB2数据库管理与开发
- MS SQL Server
- Sybase管理与开发
- MySQL及其它开源数据库
- 国内数据库产品
- NoSQL
- 内存数据库
- 列式数据库
- 数据仓库与数据挖掘
- 移动及嵌入式数据库
- Hadoop与分布式数据处理≡ 企业信息化 ≡
- ERP产品与实践
- CRM产品与实践
- HR产品与实践
- PLM/PDM产品与实践
- 云计算和SaaS产品与实践
- 物流
- 供应链
- 供应链建模与仿真
- 物流设备与系统工程
- 企业管理咨询
- 管理协同与办公自动化
- IT服务管理
- 数据中心建设与设备采购
- ERP二次开发
- Oracle ERP
- Oracle EBS R12
- PeopleSoft与JDE
- EBS相关文档
- Oracle EBS DBA
- SAP R/3
- SAP Business One开发与快速实施
- SAP财务及CRM
- SAP后勤及HR
- mySAP ERP
- 系统开发及跨应用设置
- SAP相关文档
- 国外其它ERP产品
- 国内ERP产品≡ 开发技术 ≡
- Java入门与认证版
- Java web开发及框架技术
- Java企业开发
- WEB程序开发
- WEB 2.0技术
- 动态语言
- 移动与游戏开发≡ 微软技术 ≡
- 微软产品用户交流区
- .Net人才交流
- .Net电子书籍&&书籍介绍
- 开发工具和语言
- .NET Framework 相关
- Visual Basic/VB.net
- Visual C/#
- Visual C++/vc.net
- Visual Studio
- .NET软件架构与模式
- .NET开发辅助工具及框架
- Web开发
- ASP.NET与AJAX
- Web相关技术讨论(IIS等)
- Silverlight 技术
- 微软企业级产品技术
- Exchange Server
- windows server
- SQL Server
- SharePoint
- Biztalk
- 嵌入式及移动开发
- Windows Embedded 嵌入式技术
- Windows 移动设备
- Office开发
- Microsoft office system
- Office Business Application≡ 软件工程与项目管理 ≡
- 系统设计与建模
- 数据建模
- 项目管理
- 项目管理文档资源
- PMP认证
- 项目过程
- 软件测试
- 算法讨论与研究≡ IBM软件技术园地 ≡
- IBM信息管理
- Lotus
- Mashup技术
- Tivoli
- Websphere
- Rational
- Jazz大赛专区
- 与SOA相关的IBM产品与技术
- IBM蓝色之路
- IBM软件技术精英协会
- 软件技术精英活动专版≡ 操作系统与硬件 ≡≡ 行业纵向讨论区 ≡
- IT业界评论与展望
- 政府与教育事业
- 中国政府信息主管联盟
- 电信行业
- 金融行业
- 医卫行业
- 制造行业
- 电力行业
- 信息安全与审计≡ 会员交流 ≡
- IT职业生涯
- 招聘求职商务信息
- 投资理财
- 体育世界
- 体育博彩专版
- 汽车世界
- 旅游,驴友
- 外语角
- 数码摄影
- 电子图书与IT文档资料
- 软件交流
- 软件交流精华区≡ ITPUB产品与服务 ≡
- ITPUB地面活动专版
- BLOG天地
- 授权用户区
- 站务管理