我有一個有97列的表,我想總結96列。ORACLE中多列的總和
select sum(col1+col2+col3+.....+col96)
from tableA where meter_id=x;
我不想給所有96列名稱,最好的辦法是什麼? Regards, RR
我有一個有97列的表,我想總結96列。ORACLE中多列的總和
select sum(col1+col2+col3+.....+col96)
from tableA where meter_id=x;
我不想給所有96列名稱,最好的辦法是什麼? Regards, RR
沒有辦法避免寫每個列名。你所能做的就是詛咒這個愚蠢的數據建模者並且忙於cut'n'paste。
您可以創建一個virtual column,增加了你96列,是這樣的:
alter table TABLEA add (MY_TOTAL_COL NUMBER GENERATED ALWAYS AS (col1+col2+col3...) VIRTUAL);
那麼你的查詢可以簡單地做sum(my_total_col)
。
在有列的顯著數量的情況下,我想看看使用數據字典表,以幫助使用查詢類似下面創建查詢:
Select column_name || '+' as column_name_list
From user_tab_columns
Where table_name = 'TABLEA'
Order by column_id
它不改變世界,但確實簡化了寫一個查詢。
你可能是最好的總結列,然後把結果放在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
);