2012-11-01 36 views
0

我有4個SQL查詢從同一個表中獲取數據,我在想是否可以創建包含多個查詢的視圖。例如,其中一個查詢看起來像:爲Oracle中的多個查詢創建視圖

SELECT Count(COLUMN1) FROM TABLE1 WHERE COLUMN3 > '01-Oct-12' AND COLUMN3< '01-Nov-12' 

而另一個模樣:

SELECT Count(COLUMN2) FROM TABLE1 WHERE COLUMN3 > '01-Oct-12' AND COLUMN3 < '01-Nov-12' 

感謝,

+0

什麼是國稅發查詢的項目的形狀 - 一個列或四? – APC

回答

1

最簡單的實現將是:

create or replace view v23 as 
    select count(column1) as col1_count 
      , count(column2) as col2_count 
    from TABLE1 
     WHERE COLUMN3 > '01-Oct-12' AND COLUMN3 < '01-Nov-12' 

但如果不是所有的查詢使用相同的標準,你可以使用標量子查詢:

create or replace view v23 as 
    select 
    (select count(column1) from TABLE1 
     WHERE COLUMN3 > '01-Oct-12' AND COLUMN3 < '01-Nov-12') as col1_count 
    , (select count(column2) from TABLE2 
     WHERE COLUMN3 > '01-Oct-12' AND COLUMN3 < '01-Nov-12') as col2_count 
    from dual 
2
CREATE VIEW viewname AS 
SELECT Count(COLUMN1) as col1 FROM TABLE1 WHERE COLUMN3 > '01-Oct-12' AND COLUMN3< '01-Nov-12' 
union all 
SELECT Count(COLUMN2) as col1 FROM TABLE1 WHERE COLUMN3 > '01-Oct-12' AND COLUMN3 < '01-Nov-12' 
2

如果你想要的數據在同一記錄集和同一列中,則可以使用UNION ALL

SELECT Count(COLUMN1) As CNT, 'Q1' as Src 
FROM TABLE1 
WHERE COLUMN3 > '01-Oct-12' 
AND COLUMN3< '01-Nov-12' 
UNION ALL 
SELECT Count(COLUMN2) as Cnt, 'Q2' as Src 
FROM TABLE1 
WHERE COLUMN3 > '01-Oct-12' 
    AND COLUMN3 < '01-Nov-12' 

我加入了一列,可以幫助您確定數據來自哪個查詢。如果這不需要,那麼你可以放棄使用它。