首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

SQL Server 改成ORACLE的语法

2011-12-24 
SQL Server 改为ORACLE的语法select ID as 部门编号, Department as 部门名称,[正式] Sum ( case wh

SQL Server 改为ORACLE的语法
select ID as '部门编号', Department as '部门名称', 
  [正式] = Sum ( case when EmployeeType = ' 正式 ' then Cnt else 0 end ),
  [临时] = Sum ( case when EmployeeType = ' 临时 ' then Cnt else 0 end ), 
  [辞退] = Sum ( case when EmployeeType = ' 辞退 ' then Cnt else 0 end ),
  [合计] = Sum ( case when EmployeeType <> '' then Cnt else 0 end ) 
from VDepartmentEmployeeType group by ID, Department

上面的sql是sqlserver的,是个表的行列转换
[正式] = Sum (...),改成oracle应该怎么写呢?

[解决办法]
select ID as '部门编号', Department as '部门名称', 
Sum ( case when EmployeeType = ' 正式 ' then Cnt else 0 end ) 正式,
Sum ( case when EmployeeType = ' 临时 ' then Cnt else 0 end ) 临时 , 
Sum ( case when EmployeeType = ' 辞退 ' then Cnt else 0 end ) 辞退,
Sum ( case when EmployeeType <> '' then Cnt else 0 end ) 合计 
from VDepartmentEmployeeType group by ID, Department
[解决办法]
这个

SQL code
select ID 部门编号, Department 部门名称,   Sum ( case when EmployeeType = ' 正式 ' then Cnt else 0 end ) 正式,  Sum ( case when EmployeeType = ' 临时 ' then Cnt else 0 end ) 临时 ,   Sum ( case when EmployeeType = ' 辞退 ' then Cnt else 0 end ) 辞退,  Sum ( case when EmployeeType <> '' then Cnt else 0 end ) 合计 from VDepartmentEmployeeType group by ID, Department
[解决办法]
探讨
select ID as '部门编号', Department as '部门名称',
[正式] = Sum ( case when EmployeeType = ' 正式 ' then Cnt else 0 end ),
[临时] = Sum ( case when EmployeeType = ' 临时 ' then Cnt else 0 end ),
[辞退] = Sum……

[解决办法]
SQL code
---------- 方法一:case when 语句---------------------select ID as '部门编号', Department as '部门名称',    Sum( case when EmployeeType = ' 正式 ' then Cnt else 0 end ) as "正式",  Sum( case when EmployeeType = ' 临时 ' then Cnt else 0 end ) as "临时",    Sum( case when EmployeeType = ' 辞退 ' then Cnt else 0 end ) as "辞退",  Sum( case when nvl(EmployeeType,'')<>'' then Cnt else 0 end ) as "合计"from VDepartmentEmployeeType group by ID, Department;---------- 方法二:decode函数 -----------------------select ID as '部门编号', Department as '部门名称',    Sum(decode(EmployeeType,' 正式 ',Cnt,0) as "正式",  Sum(decode(EmployeeType,' 临时 ',Cnt,0) as "临时",    Sum(decode(EmployeeType,' 辞退 ',Cnt,0) as "辞退",  Sum(decode(EmployeeType,null,0,'',0,Cnt) as "合计"from VDepartmentEmployeeType group by ID, Department;
[解决办法]
把case换成decode
select ID as '部门编号', Department as '部门名称', 
[正式] = Sum ( decode(EmployeeType,'正式',1,0),
[临时] = Sum (decode(EmployeeType,'临时',1,0 ), 
[辞退] = Sum ( decode(EmployeeType,'辞退',1,0 ),
[合计] = Sum ( decode(EmployeeType,'合计',1,0) ) 
from VDepartmentEmployeeType group by ID, Department
[解决办法]
探讨
select ID as '部门编号', Department as '部门名称',
Sum ( case when EmployeeType = ' 正式 ' then Cnt else 0 end ) 正式,
Sum ( case when EmployeeType = ' 临时 ' then Cnt else 0 end ) 临时 ,
Sum ( case when E……

热点排行