我想知道是否有人發現了一種方法,您可以在其中獲取表中的平均值或所有列。我目前有900列的表,它將使輸入查詢非常繁瑣與對於每列oracle SQL
SELECT AVG(t.columnA), AVG(t.columnB), etc...
是否有可能是另一種方式去了解這一點。假設它們都是NUMBER類型。
我想知道是否有人發現了一種方法,您可以在其中獲取表中的平均值或所有列。我目前有900列的表,它將使輸入查詢非常繁瑣與對於每列oracle SQL
SELECT AVG(t.columnA), AVG(t.columnB), etc...
是否有可能是另一種方式去了解這一點。假設它們都是NUMBER類型。
這裏是您的解決方案,根據戈登的想法:
select 'SELECT AVG(' ||all_columns||') FROM YourTable' from (
SELECT LISTAGG(column_name,',') within group (order by column_name) as all_Columns
FROM all_tab_columns
WHERE table_name = 'YourTable')
與你的表名稱替換YourTable,這將產生一個輸出,您將需要複製和運行。
它生成所有的列名,用逗號分隔,並且集中到一個select查詢中。
[AVG](http://docs.oracle.com/cd/E11882_01/server.112/e41084/functions018.htm)不包含多個參數;有多個列的話,生成的SQL會得到ORA-00909,但是這種方法可以用'LISTAGG(column_name,'),AVG(')'來代替。 –
查找'all_tab_cols'中的列名稱並將查詢邏輯構建爲查詢或使用電子表格。 –
900列!!!創建一個視圖,爲每列創建一個UNION ALL。 (很高興有。)然後做一個小組。 – jarlh
如果你可以生成一個select語句,只需要找到並替換所有的''',AVG('),然後你需要在'from'關鍵字前添加第一個'AVG('和''''''''我的建議是如果您的查詢工具不支持查找/替換所有功能,請使用Notepad ++。 – vtuhtan