求把两个查询语句连起来的语句
1:  select DISTINCT dept.dept_name , COUNT(emp_joindate), COUNT(emp_enterdate), COUNT(el_date), COUNT(dr_dept_a), COUNT(dr_dept_f) from dept LEFT OUTER JOIN (SELECT COUNT(emp_joindate),emp_joindate,emp_enterdate,emp_dept FROM emp WHERE to_char(emp_joindate,'yyyy-mm') <='2011-10' AND to_char(emp_enterdate,'yyyy-mm') <='2011-10' GROUP BY emp_dept,emp_joindate,emp_enterdate) ON dept_id = emp_dept LEFT OUTER JOIN (SELECT COUNT(el_date),el_date ,el_dept FROM el WHERE To_char(el_date, 'yyyy-mm') = '2011-10' GROUP BY el_dept,el_date ) ON dept_id =el_dept LEFT OUTER JOIN (SELECT COUNT(dr_dept_f),dr_dept_f FROM dr WHERE To_char(dr.dr_date, 'yyyy-mm') = '2011-10' GROUP BY dr_dept_f) ON dept.dept_name = dr_dept_f LEFT OUTER JOIN (SELECT count(drt.dr_date),drt.dr_dept_a FROM dr drt WHERE To_char(drt.dr_date, 'yyyy-mm') = '2011-10' GROUP BY drt.dr_dept_a) ON dept.dept_name = dr_dept_a group by dept_name,emp_joindate,emp_enterdate,el_date,dr_dept_a,dr_dept_f ORDER BY dept.dept_name2:SELECT dept_id, (SELECT COUNT(1) FROM emp e1 WHERE emp_education='研究生' AND e1.emp_dept=e.dept_id GROUP BY emp_dept), (SELECT COUNT(1) FROM emp e2  WHERE emp_education='本科' AND e2.emp_dept=e.dept_id GROUP BY emp_dept),(SELECT COUNT(1)FROM emp e3 WHERE emp_education='大专' AND e3.emp_dept=e.dept_id GROUP BY emp_dept) ,(SELECT COUNT(1) FROM emp e4 WHERE emp_education='高中及以下' AND e4.emp_dept=e.dept_id GROUP BY emp_dept) FROM dept e
求一个sql语句把这两句连成一句所得的表的列名是
dept.dept_name , COUNT(emp_joindate), COUNT(emp_enterdate), COUNT(el_date), COUNT(dr_dept_a), COUNT(dr_dept_f),ept_id, (SELECT COUNT(1) FROM emp e1 WHERE emp_education='研究生' AND e1.emp_dept=e.dept_id GROUP BY emp_dept), (SELECT COUNT(1) FROM emp e2  WHERE emp_education='本科' AND e2.emp_dept=e.dept_id GROUP BY emp_dept),(SELECT COUNT(1)FROM emp e3 WHERE emp_education='大专' AND e3.emp_dept=e.dept_id GROUP BY emp_dept) ,(SELECT COUNT(1) FROM emp e4 WHERE emp_education='高中及以下' AND e4.emp_dept=e.dept_id GROUP BY emp_dept)

解决方案 »

  1.   

    就连一起就行
    第一个查询完后紧接着第二个查询 emp_dept能对上就行
      

  2.   

    用union all或union但是这是有条件的,两个查询的列相同数据类型一致。
      

  3.   

    你sql2对emp扫描4次,效率很低啊,说说你的需求,重写吧
      

  4.   

    我的需求
    emp表显示员工信息 需要用emp_id(number),emp_dept(number 外键到dept_id),emp_joindate(date型),emp_enterdate(date),educateon(varchar2(20))
    dr表显示部门调动 需要dr_date(date),dr_dept_f(varchar2(20)调动前部门),dr_dept_a(varchar2(20)调动后部门)
    el表 显示员工离职 需要el_date(date),el_dept(number 外键dept_id)
    dept表显示部门信息 需要dept_id(number),dept_name(varchar2(20))现在我要查询某月的 部门名称(dept_name) 部门人数 员工入职数(count(emp_joindate)) 员工离职数(count(el_date)) 员工调入数(count(dr_dept_a)) 员工调出数(count(dr_dept_f)) 并统计员工的学历(education)的人数(研究生,本科,大专,高中级以下)用一个Sql语句写出 包含以上内容 并且只得出列如下
    部门名称,部门人数 员工入职数,员工离职数,员工调入数,员工调出数,研究生,本科,大专,高中级以下