0

だから私は次のコードを持っています

SELECT CASE 
         WHEN ( ORG_CODE_PROV = 'ABC' ) THEN 'DEF' 
         ELSE ORG_CODE_PROV 
       END      AS ORG_CODE_PROV , 
       THE_DATE, 
       CASE 
         WHEN ( THE_NUMBER > '1' ) THEN 'Valid' 
         ELSE 'Invalid' 
       END      AS THE_NUMBER, 
       Count(*) AS Amount 
FROM   THE_TABLE
GROUP  BY ORG_CODE_PROV , 
          CASE 
            WHEN ( ORG_CODE_PROV = 'ABC' ) THEN 'DEF' 
            ELSE ORG_CODE_PROV 
          END, 
          THE_DATE, 
          CASE 
            WHEN ( THE_NUMBER > '1' ) THEN 'Valid' 
            ELSE 'Invalid' 
          END 

それは(より多くのデータをロードしても)の行に沿って何かを生成します

ORG_CODE_PROV | THE_DATE | THE_NUMBER | Amount
----------------------------------------------
ABC           | 201204   | Invalid    | 50
ABC           | 201204   | Valid      | 200
ABC           | 201205   | Valid      | 200
ABC           | 201206   | Invalid    | 50
ABC           | 201206   | Valid      | 100
ZYZ           | 201204   | Invalid    | 20
XYZ           | 201204   | Valid      | 200

しかし、私が望むのは、合計に対する無効な「数字」の割合を表示することです。

ORG_CODE_PROV | THE_DATE | THE_PERCENTAGE
----------------------------------------------
ABC           | 201204   | 20    
ABC           | 201205   | 0
ABC           | 201206   | 33
ZYZ           | 201204   | 9

ピボットテーブルを使用する必要があるかもしれないと思いますが、ひどく行き詰まりました。何か助けはありますか?

ありがとう、

JJ

[編集]値は 、ORG_CODE_PROVさらに下の IN 句に含まれているため、既知です。それがまったく役立つかどうかわかりませんか?

4

2 に答える 2