1
我正在編寫一個報告(爲了簡單起見,用戶端)我想使用oracle查詢將最終導入到excel中的數據聚合在一起,但可能會也會自動運行到打印機,因此處理過程需要在查詢本身完成。Oracle數據透視表和多列排序
我正在使用oracle,版本10.2.0.5.0(從v $實例中選擇版本)。
好的,所以我使用這個查詢;
SELECT substr(arg_string,1,4) node,
substr(numtodsinterval(end_time-start_time,'DAY'), 12, 8) dur,
row_number() over (order by substr(arg_string,1,4),
start_time) rn
FROM pro.program_status
where prog_name like ('%v8x-6%')
and start_time > sysdate - 10;
其中返回類似於以下內容的數據集;
NODE DUR RN
---- -------- ----------
s002 00:25:40 1
s002 00:27:21 2
s002 00:03:20 3
s002 00:27:44 4
...
s004 00:21:29 22
s004 00:22:19 23
s004 00:05:13 24
s004 00:22:47 25
...
s005 00:03:13 42
s005 00:00:46 43
s005 00:02:01 44
s005 00:00:45 45
...
s152 00:01:13 1840
而我的期望輸出如下;
NODE DUR1 DUR2 DUR3
---- -------- -------- ----------
s002 00:25:40 00:27:21 00:03:20
s004 00:21:29 00:22:19 00:05:13
s005 00:03:13 00:00:46 00:02:01
and so on
我試過以下查詢;
SELECT node,
max(CASE WHEN rn = 1 THEN dur ELSE NULL END) dur1,
max(CASE WHEN rn = 2 THEN dur ELSE NULL END) dur2,
max(CASE WHEN rn = 3 THEN dur ELSE NULL END) dur3
FROM (SELECT substr(arg_string,1,4) node,
substr(numtodsinterval(end_time-start_time,'DAY'), 12, 8) dur,
row_number() over (order by substr(arg_string,1,4),
start_time) rn
FROM pro.program_status
where prog_name like ('%v8x-6%')
and start_time > sysdate - 10)
group by node
/
然而,這將返回以下結果作爲唯一的「S002」通過這個網站搜索後,但被標記爲1,2和3
NODE DUR1 DUR2 DUR3
---- -------- -------- --------
s002 00:25:40 00:27:21 00:03:20
s004
s005
s009
and so on
我敢肯定,我失去了一些東西很明顯,和許多其他我似乎無法正常工作。
更詳細的一點,我不知道每個節點會出現多少次,或者每天會有多少個節點。
在此先感謝。 湯姆
嗨,馬克,我沒有足夠的聲譽對這裏又投了(今天才加入),但完全沒有的伎倆! – Bryant1003