2016-10-13 9 views
0

私はいくつかのコード、下のサンプルテーブルに取り組んでいます。いくつかのクエリoracleで問合せ集計を生成する方法は?

サンプルテーブルに集約された出力をお探し

col1 col2 
---- ---- 
val1 Fully 
val1 Partial 
val2 NoService 
val2 Partial 
val3 Fully 
val3 NoService 
val3 Fully 
val3 Partial 
val1 Fully 
val2 NoService 

出力は

Col1 Fully Partial NoService Total 
---- ----- ------- --------- ----- 
val1  2  1  0   3 
val2  0  1  2   3 
val3  2  1  1   4 

ない神託でこれを行う方法がわからを期待しましたか?助けてください

答えて

2

これを試してください:それはあなたが期待した結果を提供しますが、それは動的な解決策ではありません。 val2に固定値がある場合は、動的な方法を選択する必要があります。

SELECT col1, 
    SUM(CASE WHEN col2 = 'Fully' THEN 1 ELSE 0 END) Fully, 
    SUM(CASE WHEN col2 = 'Partial' THEN 1 ELSE 0 END) Partial, 
    SUM(CASE WHEN col2 = 'NoService' THEN 1 ELSE 0 END) NoService, 
    COUNT(col2) total 
FROM yourTable 
GROUP BY col1 
1

Oracleでは、あなたはCASEと、この使用してピボットまたは集約関数を実行できます。

SELECT COL1, 
    COUNT(CASE when COL2 = 'FULLY' THEN 1 ELSE 0 END) AS FULLY, 
    COUNT(CASE when COL2 = 'PARTIAL' THEN 1 ELSE 0 END) AS PARTIAL 
FROM TABLE_A A 
LEFT JOIN TABLE_A B 
    on B.COL1 = A.COL1 
GROUP BY COL1 
1

は、私ができるクエリ上から

select * from(select nvl(col1,'Total') col1,nvl(col2,'Total') col2,count(1) cnt from mytable group by CUBE(col1,col2)) 
pivot 
(
    sum(cnt) 
    for col2 IN 
       (
        'Fully' AS "Fully", 
        'Partial' AS "Partial", 
        'NoService' AS "NoService", 
        'Total' As "Total" 
       ) 
) 

ここオラクルでは、この使用してピボットクエリ機能を試してみてください列と行の合計を取得します。

あなたの必要に応じてクエリを使用してください。

関連する問題