2017-08-16 84 views
0

這裏是數據集:如何添加特定列值的小計?

這裏是SQL我:

select f.DATE, f.PROD_STATUS, 
count (*) AS TOTAL 
from PROD_TABLE f 
where DATE = '04-MAY-17' 
GROUP BY f.DATE, f.PROD_STATUS 

我試圖獲得'SUCCESS'值作爲SQL結果列:

(SUCCESS = READY_1 + READY_2 + READY_3 + READY_4 + READY_5) 

我希望SQL結果看起來像這樣:

this table

我該如何做到這一點?

+0

我認爲你可以使用'pivot'在甲骨文完成這件事。 – Alam

回答

0

檢查:

with t as (
    select 1 as ready_1, 
     2 as ready_2, 
     3 as ready_3, 
     1 as in_process, 
     4 as fail, 
     5 as crash, 
     '5/4/2017' as dat 
    from dual 
    union all 
    select 2 as ready_1, 
     2 as ready_2, 
     3 as ready_3, 
     1 as in_process, 
     4 as fail, 
     0 as crash, 
     '5/5/2017' as dat 
    from dual 
) 

select dat, prod_stat, max(suc) over(partition by dat) as success, sum(value) over(partition by dat) as total 
from (
    select dat, prod_stat, value, sum(value) over (partition by dat) as suc 
    from t 
    unpivot( 
    value for prod_stat in (ready_1, ready_2, ready_3) 
) 

union all 

    select dat, prod_stat, value, null as suc 
    from t 
    unpivot( 
    value for prod_stat in (in_process, fail, crash) 
) 
) 

結果:

DAT   PROD_STAT SUCCESS TOTAL 
5/4/2017 READY_2  6 16 
5/4/2017 READY_1  6 16 
5/4/2017 CRASH   6 16 
5/4/2017 FAIL   6 16 
5/4/2017 IN_PROCESS  6 16 
5/4/2017 READY_3  6 16 
5/5/2017 FAIL   7 12 
5/5/2017 IN_PROCESS  7 12 
5/5/2017 CRASH   7 12 
5/5/2017 READY_2  7 12 
5/5/2017 READY_1  7 12 
5/5/2017 READY_3  7 12 
+0

嗨l3rutt,謝謝你的迴應。問題,這個子句不會使值爲靜態值嗎? 1 as ready_2, 1 as ready_3, 1 as in_process, 8 as total, 5 as suc, – SKINNY

+0

數據集是現有數據。共有8種生產狀態,其中5種加在一起時取得同等成功(總和爲READY_1,2,3,4,5) – SKINNY

+0

@SKINNY編輯答案 – I3rutt

相關問題