现在有一个表格,只关注其中的线圈名(30个)、记录时间(年月日小时分钟,间隔为5分钟)、流量3个字段。即下图的第一列,第二列,倒数第二列。我现在想要使查询结果按下图方式排序。横向为每日的288个五分钟,纵轴为不同的线圈名,也就是一个288×30的表格。查询语句该怎样写才能使结果呈现为我想要的表格形式?

解决方案 »

  1.   

    -- 大概这个样子
    select fstr_loopgroupid, trunc(ftd_time) ,
    sum(case to_char(ftd_time,'hh24mi' between '0000' and '0004' then fint_volumn else 0 end) C1 ,
    sum(case to_char(ftd_time,'hh24mi' between '0005' and '0009' then fint_volumn else 0 end) C2 ,
    ....
    sum(case to_char(ftd_time,'hh24mi' between '2355' and '2359' then fint_volumn else 0 end) C288,from t 
    group by fstr_loopgroupid, trunc(ftd_time)
      

  2.   


    可以动态生成 这 12 * 24 个列语句;执行的时候,拼接成 一个大的 SQL ; 
      

  3.   


    可以动态生成 这 12 * 24 个列语句;执行的时候,拼接成 一个大的 SQL ; 报错为缺失右括号,我在'hh24mi'后面补上了还是报这个错,是不是to_char不能作变量表达式?
      

  4.   

    case when to_char(ftd_time,'hh24mi')  between '0000' and '0004' then fint_volumn else 0 end
      

  5.   

    select fstr_loopgroupid, trunc(ftd_time) ,
    sum(case to_char(ftd_time,'hh24mi' between '0000' and '0004' then fint_volumn else 0 end) C1 ,
    sum(case to_char(ftd_time,'hh24mi' between '0005' and '0009' then fint_volumn else 0 end) C2 ,
    ....
    sum(case to_char(ftd_time,'hh24mi' between '2355' and '2359' then fint_volumn else 0 end) C288,from t 
    group by fstr_loopgroupid, trunc(ftd_time)