日期:2014-05-16  浏览次数:20776 次

存储过程动态列
比如有两张表结构如下:
KHH         ZXYZ         YZPF(得分)
001          123            2
002          111            3
003          112            1
004          113            2
...         ...    ...        ...    ....

另一张表:
ID      ZBMC 
123      年龄
111      文化程度
112      投资偏好
113      平仓情况

现在想实现一个存储过程的报表统计,没有选择某个字段则效果如下:
得分   年龄  文化程度   投资偏好  ...
0      2     0         0   ...
1      3     0         0   ...
2      0     1         0   ...
3      0     0         2   ...
如果只选择年龄其它的字段不会出现,效果如下:
得分   年龄  
0      2     
1      3     
2      0     
3      0     


------解决方案--------------------
这个 还算不上是动态列

if(选择全部)
 select * from ..
else
 select 选择值 from ..
------解决方案--------------------
可以先定义一个串变量,拼一个创建临时表的ddl语句,然后用 execute immediate 执行创建表