日期:2014-05-17  浏览次数:20732 次

帮忙求一条sql语句
表结构如下:
        id                 createDate                 kpiId                 kpiName                 kpiValue
          1                 2007-07-20                     101                       name1                   1000
          2                 2007-07-21                     102                       name2                   2000
          3                 2007-07-20                     102                       name2                   3000
          4                 2007-07-22                     101                       name1                   4000
          .............................................................


      如上表结构,每一条记录表示的是某个kpiName的值,kpiId   和   kpiName是一一对应的。要求显示如下样式:
                时间                         name1                       name2             ........
          2007-07-20                   1000                         3000
          2007-07-21                                                   2000
          2007-07-22                   4000

        结果中的.....表示可能会有多列,这取决于库表中的kpiName字段都有多少个,如果某个kpiName在某个时间没有值的话就空着,结果按时间排序。

        请高手帮一下忙,看怎么写出sql语句。
        谢谢。

------解决方案--------------------
select createdate,
sum(decode(kpiid,101,kpivalue,0)) name1,
sum(decode(kpiid,102,kpivalue,0)) name2,
...
from a group by createdate;
------解决方案--------------------
procedure getRstData( rst out sys_refcursor)
is
begin
declare
cursor cur is select distinct (kpiName) from t;
fkpiname varchar2(100);
str varchar2(4000);
begin
str:= 'select createDate ';
open cur;
loop
fetch cur into fkpiname;
exit whe