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

SQLServer语法转Oracle,该如何处理

2012-03-29 
SQLServer语法转Oracle原表格式与格式是这样的一个格式A1A2A3指标1111指标2121指标3131指标1142指标2152指

SQLServer语法转Oracle
原表格式与格式是这样的一个格式
A1A2A3
指标1111
指标2121
指标3131
指标1142
指标2152
指标3162
指标1173

最终想要的一个结果为
指标1指标2指标3
11 12 13  
14 15 16  
17 0 0  

现在在SQLServer中已经写好了这个语句

SQL code
DECLARE @sql VARCHAR(8000)SET @sql = 'select A3'SELECT  @sql = @sql + '  ,max(case A1 when ''' + A1        + ''' then A2 else 0 end) [' + A1 + ']'FROM    ( SELECT DISTINCT                    A1          FROM      Table_1        ) AS aSET @sql = @sql + ' from Table_1 group by A3'EXEC(@sql) 


现在要把他转换成Oracle。但是由于对Oracle不太熟悉。所以请大家帮帮忙

[解决办法]
那就类似这样写好了。
SQL code
declare var_sql_str varchar2(2000);type test_array is table of Table_1.A1%type INDEX BY BINARY_INTEGER; var_test_array test_array; begin  select distinct A1  bulk collect into var_test_array from Table_1; var_sql_str:='select A3' for i in 1..var_test_array.count loop begin var_sql_str:=var_sql_str||', max(case A1 when '''||var_test_array(i)||''' then A2 else 0 end) as '||var_test_array(i)||'' end loop; var_sql_str:=var_sql_str||' from Table_1 group by A3' execute immediate var_sql_str; end ; 

热点排行