2013-05-06 25 views
-3

我在oracle 10g中有下表(company_details)。簡單GWT中的動態SQL查詢和輸出

STATE  COMPANY_NAME  AVG_SAL 
KN    GOO    $5500 
IN    SCOPE    $6000 
AR    FB    $8250 
CL    PAL    $4500 
CL    GOO    $6000 
AR    GOO    $7000 
IN    FB    $3999 

我想要形成一個如下所示的輸出並將其顯示在簡單的GWT數據網格中。

STATE count(goo) AVG_SAL count(SCOPE) AVG_SAL count(FB) AVG_SAL count(PAL) AVG_SAL 
KN  1   5500  --   --   --  --  --   -- 
IN  --   --   1   6000  1  3999  --   -- 
AR  1   7000   --   --   1  8250  --  -- 
CL  1   6000  --    --  --   --  1  4500 

我試着寫下面的查詢,但它沒有奏效。請幫助

select 
    state, 
    count(*)as "GOO_Records", to_char(SUM(average_sal),'$999,999') as "GOO_AVGSAL" 
    from company_details 
where company_status = 'OPEN' and COMPANY_NAME = 'GOO' group by state order by state 
union 
select 
    state, 
    count(*)as "FB_Records", to_char(SUM(average_sal),'$999,999') as "FB_AVGSAL" 
    from company_details 
where company_status = 'OPEN' and COMPANY_NAME = 'FB' group by state order by state 

任何幫助表示讚賞。提前致謝!!!!

+0

我嘗試使用透視,但我的數據庫仍處於10g和我米,自我嘗試加入。我被困在形成我的查詢。 – Ryan 2013-05-06 11:35:26

回答

2

試試這個:

SELECT 
    state, 
    GooCount, 
    GooCount /Total AS AVG_GOO, 
    sCOPECount, 
    SCOPECount/Total AS AVG_SCOPE, 
    FBCOunt, 
    FBCount /Total AS AVG_FB, 
    PALCount, 
    PALCount /Total AS AVG_PAL 
FROM 
(
    select 
     state, 
     SUM(CASE WHEN COMPANY_NAME = 'GOO' THEN 1 ELSE 0 END) AS GooCount, 
     SUM(CASE WHEN COMPANY_NAME = 'SCOPE' THEN 1 ELSE 0 END) AS SCOPECount, 
     SUM(CASE WHEN COMPANY_NAME = 'FB' THEN 1 ELSE 0 END) AS FBCount, 
     SUM(CASE WHEN COMPANY_NAME = 'PAL' THEN 1 ELSE 0 END) AS PALCount,  
     COUNT(*) AS total 
    from company_details 
    where company_status = 'OPEN' 
    group by state order by state 
) AS sub; 
+0

@ user2354279 - 隨時歡迎您:)歡迎來到Stackoverflow。如果您發現它有幫助,請嘗試接受答案,方法是檢查答案左側的標記,這是Stackoverflow中的工作方式,謝謝:) – 2013-05-06 14:34:08