2013-02-07 76 views
4

我有一個有97列的表,我想總結96列。ORACLE中多列的總和

select sum(col1+col2+col3+.....+col96) 
from tableA where meter_id=x; 

我不想給所有96列名稱,最好的辦法是什麼? Regards, RR

回答

6

沒有辦法避免寫每個列名。你所能做的就是詛咒這個愚蠢的數據建模者並且忙於cut'n'paste。

1

您可以創建一個virtual column,增加了你96列,是這樣的:

alter table TABLEA add (MY_TOTAL_COL NUMBER GENERATED ALWAYS AS (col1+col2+col3...) VIRTUAL); 

那麼你的查詢可以簡單地做sum(my_total_col)

4

在有列的顯著數量的情況下,我想看看使用數據字典表,以幫助使用查詢類似下面創建查詢:

Select column_name || '+' as column_name_list 
From user_tab_columns 
Where table_name = 'TABLEA' 
Order by column_id 

它不改變世界,但確實簡化了寫一個查詢。

1

你可能是最好的總結列,然後把結果放在Excel中做總和。否則,這個查詢應該做你需要的:

SELECT SUM(TOTAL_SUM) FROM (
    SELECT SUM(column1) AS TOTAL_SUM FROM your_table 
    UNION 
    SELECT SUM(column2) AS TOTAL_SUM FROM your_table 
    UNION 
    SELECT SUM(column3) AS TOTAL_SUM FROM your_table 
);