从Oracle到SQL server的SQL分区
我有两个表格如下:从Oracle到SQL server的SQL分区,sql,sql-server,oracle,Sql,Sql Server,Oracle,我有两个表格如下: create table emp ( empno NUMBER(4) constraint E_PK primary key , job VARCHAR2(8) , deptno NUMBER(2) default 10 ) ; create table departments ( deptno NUMBER(2) constraint D_PK primary key , dname VARCH
create table emp
( empno NUMBER(4) constraint E_PK primary key
, job VARCHAR2(8)
, deptno NUMBER(2) default 10
) ;
create table departments
( deptno NUMBER(2) constraint D_PK primary key
, dname VARCHAR2(10)
) ;
在Oracle中,我有一个查询,用于显示具有每个部门的这些职位头衔的所有员工
select d.dname as department
, e.job as job
, e.ename as emp
from emp e
PARTITION BY (JOB)
right outer join
departments d
using (deptno)
order by department, job;
结果是:
DEPARTMENT JOB EMP
---------- -------- --------
ACCOUNTING Designer Chris
Peter
Manager Mike
Tester null
TRAINER null
HR Designer
Manager
Tester
TRAINER
SALES Designer Black
Manager Jane
Tester Mary
Jack
Wil
Take
TRAINER null
TRAINING Designer Jane
Manager null
Tester null
TRAINER Fake
Smart
Tom
Ana
我可以将此查询转换为SQL Server(2012版)吗
谢谢您可以加入这两个表以获取数据。不同之处在于,将在每一行中填充部门
SELECT
d.dname AS Department
,e.Job
,e.ename AS Emp
FROM
departments d
LEFT OUTER JOIN emp e ON d.deptno = e.deptno
ORDER BY
d.dname
,e.Job
,2.ename
要解决这个问题,您必须稍微调整一下:
SELECT
CASE WHEN RowNo = 1 THEN Department ELSE '' END AS Department
,Job
,Emp
FROM
(SELECT
d.dname AS Department
,e.Job
,e.ename AS Emp
,ROW_NUMBER() OVER (Partition By d.deptno ORDER BY e.Job,e.ename) RowNo
FROM
departments d
LEFT OUTER JOIN emp e ON d.deptno = e.deptno
) Result
ORDER BY
Result.RowNo
您可以联接这两个表以获取数据。不同之处在于,将在每一行中填充部门
SELECT
d.dname AS Department
,e.Job
,e.ename AS Emp
FROM
departments d
LEFT OUTER JOIN emp e ON d.deptno = e.deptno
ORDER BY
d.dname
,e.Job
,2.ename
要解决这个问题,您必须稍微调整一下:
SELECT
CASE WHEN RowNo = 1 THEN Department ELSE '' END AS Department
,Job
,Emp
FROM
(SELECT
d.dname AS Department
,e.Job
,e.ename AS Emp
,ROW_NUMBER() OVER (Partition By d.deptno ORDER BY e.Job,e.ename) RowNo
FROM
departments d
LEFT OUTER JOIN emp e ON d.deptno = e.deptno
) Result
ORDER BY
Result.RowNo
你还有多远?你有什么问题?你有多远?你有什么问题?