我有一個查詢,它在高水位標記上方顯示Oracle數據庫數據文件可用空間,並且我想在結尾處顯示「總計」字段,和「FreeSize(Mb)」列的總和。我只能在像下面這樣的單獨列中這樣做:在單個字段而不是單獨的列中添加列查詢結果
sum((bytes/1024/1024) - ceil((nvl(hwm,1)* (size_db_block))/1024/1024)) OVER() "Total"
如何在單個字段中顯示此內容?謝謝。
SELECT 'alter database datafile '''||file_name||''' resize '||
DECODE(trunc(ceil((nvl(hwm,1)*(size_db_block))/1024/1024) /10),0 ,10, ceil((nvl(hwm,1)* (size_db_block))/1024/1024)) ||'M;' "Resize Command",
AUTOEXTENSIBLE , bytes/1024/1024 "CurrentSize(Mb)" ,
((bytes/1024/1024) - ceil((nvl(hwm,1)* (size_db_block))/1024/1024)) "FreeSize(Mb)", sum((bytes/1024/1024) - ceil((nvl(hwm,1)* (size_db_block))/1024/1024)) OVER() "Total"
FROM dba_data_files a,
(SELECT file_id, max(block_id+blocks-1) AS hwm FROM dba_extents GROUP BY file_id) b,
(SELECT TO_NUMBER(value) AS size_db_block FROM v$parameter WHERE name = 'db_block_size') c
WHERE a.file_id = b.file_id(+) AND AUTOEXTENSIBLE='YES'
AND ceil(blocks*(c.size_db_block)/1024/1024)- ceil((nvl(hwm,1)*(c.size_db_block))/1024/1024) > 10
ORDER BY "FreeSize(Mb)";
電流輸出:
Resize Command CurrentSize(Mb) FreeSize(Mb) Total
------------------------------ ------------ ----------
datafile 1 830 38 617
datafile 2 100 65 617
datafile 3 100 80 617
datafile 4 100 80 617
datafile 5 390 354 617
但我希望它顯示:
Resize Command CurrentSize(Mb) FreeSize(Mb)
------------------------------ ------------
datafile 1 830 38
datafile 2 100 65
datafile 3 100 80
datafile 4 100 80
datafile 5 390 354
Total: 617
能否請你清理查詢!這是不可讀的。 – idmean
已編輯。我盡力而爲。我沒有自己開發整個查詢。我不是一個SQL大師,所以我不知道什麼可以「清理」。 – XerX
究竟是什麼問題?你得到多行嗎?你想使用在後續計算中返回的數字嗎? – gordatron