----dept表内容:
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
--emp表内容:
EMPNO ENAME SAL DEPTNO
7782 CLARK 2450 10
7839 KING 5000 10
7934 MILLER 1300 10
7369 SMITH 800 20
7566 JONES 2975 20
7788 SCOTT 3000 20
7876 ADAMS 1100 20
7902 FORD 3000 20
7499 ALLEN 1600 30
7521 WARD 1250 30
7654 MARTIN 1250 30
7698 BLAKE 2850 30
7844 TURNER 1500 30
7900 JAMES 950 30想得到的查询结果为:
DEPTNO部门编码 DNAME部门名称 LOC位置 EMPNO雇员编码 ENAME雇员名字
10 ACCOUNTING NEW YORK [7782][7839][7934] [CLARK][KING][MILLER]
20 RESEARCH DALLAS [7369][7566][7788][7876][7902] [SMITH][JONES][SCOTT][ADAMS][FORD]
30 SALES CHICAGO [7499][7521][7654][7698][7844][7900] [ALLEN][WARD][MARTIN][BLAKE][TURNER][JAMES]
40 OPERATIONS BOSTON 说明:对emp表中的相同DEPTNO的雇员查询结果进入一个新记录的一个字段中,例如EMPNO雇员编码,(项目个数不固定),
其中emp表中的empno是唯一字段;dept表中deptno字段是唯一的;
对于dept表中有的字段,而emp表中没有的,在查询结果中也要显示出来。
--PS:在csdn中找答案很久了,没办法,麻烦各位了!
DEPTNO DNAME LOC
10 ACCOUNTING NEW YORK
20 RESEARCH DALLAS
30 SALES CHICAGO
40 OPERATIONS BOSTON
--emp表内容:
EMPNO ENAME SAL DEPTNO
7782 CLARK 2450 10
7839 KING 5000 10
7934 MILLER 1300 10
7369 SMITH 800 20
7566 JONES 2975 20
7788 SCOTT 3000 20
7876 ADAMS 1100 20
7902 FORD 3000 20
7499 ALLEN 1600 30
7521 WARD 1250 30
7654 MARTIN 1250 30
7698 BLAKE 2850 30
7844 TURNER 1500 30
7900 JAMES 950 30想得到的查询结果为:
DEPTNO部门编码 DNAME部门名称 LOC位置 EMPNO雇员编码 ENAME雇员名字
10 ACCOUNTING NEW YORK [7782][7839][7934] [CLARK][KING][MILLER]
20 RESEARCH DALLAS [7369][7566][7788][7876][7902] [SMITH][JONES][SCOTT][ADAMS][FORD]
30 SALES CHICAGO [7499][7521][7654][7698][7844][7900] [ALLEN][WARD][MARTIN][BLAKE][TURNER][JAMES]
40 OPERATIONS BOSTON 说明:对emp表中的相同DEPTNO的雇员查询结果进入一个新记录的一个字段中,例如EMPNO雇员编码,(项目个数不固定),
其中emp表中的empno是唯一字段;dept表中deptno字段是唯一的;
对于dept表中有的字段,而emp表中没有的,在查询结果中也要显示出来。
--PS:在csdn中找答案很久了,没办法,麻烦各位了!
解决方案 »
- report builder中一个数据模式如何跑出两种模板的报表
- 数据库表分区的问题!请大侠来看下!
- 这里有人会DOS的没~ DOS那边没啥人啊`` 谁会写这语句的~
- ORA-00972: Identification too long 这个问题困扰我好久,希望高手给予执教,谢谢。
- 在hp-ux安装数据库,通常是先安装软件再用DBCA建库好还是直接安装软件时,让它自动接下去安装数据库好
- oracle 9i 在安装到Oracle Database Configuration assistant....的时候装不下去了,等了2个小时没有反应,也没有错误提示?请教大侠是怎
- 请推荐一些在Oracla中如何使用SQL语句和函数的网站和书籍
- SQLSERVER同ORACLE的区别?
- 解决送2000分错误:ORA-03106: 致命的双任务通信协议错
- 在安装clusterware之前进行cluvfy检查出现问题,求帮忙!
- (紧急求助)建立的job不定时执行(oracle9i)??解决马上给分!谢谢
- 查询消耗I/O资源的sql
10g的实现方法:
SELECT D.DEPTNO,
D.DNAME,
D.LOC,
REPLACE('[' || REPLACE(WMSYS.WM_CONCAT(E.EMPNO), ',', '][') || ']',
'[]',
'') EMPNO,
REPLACE('[' || REPLACE(WMSYS.WM_CONCAT(E.ENAME), ',', '][') || ']',
'[]',
'') ENAME
FROM SCOTT.EMP E, SCOTT.DEPT D
WHERE D.DEPTNO = E.DEPTNO(+)
GROUP BY D.DEPTNO, D.DNAME, D.LOC;
9i,8i实现方法:
CREATE OR REPLACE FUNCTION MY_CONCAT(P_DEPTNO INT,
P_SPLITBY VARCHAR2,
P_COLNAME VARCHAR2) RETURN VARCHAR2 IS
V_STR VARCHAR2(2000) := '';
R SYS_REFCURSOR;
V_TEMP_STR VARCHAR2(100);
BEGIN
OPEN R FOR 'SELECT ' || P_COLNAME || ' FROM scott.emp WHERE deptno=' || P_DEPTNO;
LOOP
FETCH R
INTO V_TEMP_STR;
EXIT WHEN R%NOTFOUND;
IF LENGTH(V_STR) > 0 THEN
V_STR := V_STR || P_SPLITBY || V_TEMP_STR;
ELSE
V_STR := V_TEMP_STR;
END IF;
END LOOP;
CLOSE R;
RETURN(V_STR);
END MY_CONCAT;
/SELECT D.DEPTNO,
D.DNAME,
D.LOC,
REPLACE('[' || REPLACE(MY_CONCAT(d.deptno,'][','empno') , ',', '][') || ']',
'[]',
'') EMPNO,
REPLACE('[' || REPLACE(MY_CONCAT(d.deptno,'][','ename'), ',', '][') || ']',
'[]',
'') ENAME
FROM SCOTT.EMP E, SCOTT.DEPT D
WHERE D.DEPTNO = E.DEPTNO(+)
GROUP BY D.DEPTNO, D.DNAME, D.LOC
ORDER BY 1;输出:
10 ACCOUNTING NEW YORK [7782][7839][7934] [CLARK][KING][MILLER]
20 RESEARCH DALLAS [7369][7566][7902][2222] [SMITH][JONES][FORD][lgt]
30 SALES CHICAGO [7499][7521][7654][7698][7844][7900] [ALLEN][WARD][MARTIN][BLAKE][TURNER][JAMES]
40 OPERATIONS BOSTON