現在有一個表格,只關注其中的線圈名(30個)、記錄時間(年月日小時分鐘,間隔為5分鐘)、流量3個欄位。即下圖的第一列,第二列,倒數第二列。

我現在想要使查詢結果按下圖方式排序。橫向為每日的288個五分鐘,縱軸為不同的線圈名,也就是一個288×30的表格。查詢陳述句該怎樣寫才能使結果呈現為我想要的表格形式?
uj5u.com熱心網友回復:
對了,表格內的元素是流量uj5u.com熱心網友回復:
-- 大概這個樣子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)
uj5u.com熱心網友回復:
感徑訓復這個貼子;uj5u.com熱心網友回復:
哈哈我之前確實發過一個帖子,這是其中一個小問題。感謝版主的幫助,話說里面的陳述句可以用回圈實作嗎。
uj5u.com熱心網友回復:
可以動態生成 這 12 * 24 個列陳述句;執行的時候,拼接成 一個大的 SQL ;
uj5u.com熱心網友回復:
-- 大概這個樣子
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)
uj5u.com熱心網友回復:
case when to_char(ftd_time,'hh24mi') between '0000' and '0004' then fint_volumn else 0 enduj5u.com熱心網友回復:
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)
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/97865.html
標籤:基礎和管理
上一篇:sqlload選擇性匯入資料
