2016-11-23 18 views
0

DB:ORACLE複数の異なる行を持つSUM

こんにちは。私は、クエリを構築していると私は次のような状況があります。

--------------------------------------- 
Risk   Risk Factor  Control 
--------------------------------------- 
RK 1   RF 1   Control 1 
RK 1   RF 1   Control 2 
RK 2   RF 3   Control 1 
--------------------------------------- 

は、だから私は、私はあまりにもリスクごとに持っているどのくらいのコントロールリスクの電子ごとに持っているどのくらいのリスク要因合計したいと思います

私のテーブルを。

結果

-------------------------------------- 
Risk   SUM RF  SUM Control 
-------------------------------------- 
RK 1   1   2 
RK 2   1   1 
-------------------------------------- 

は、誰もがこの問題を解決する方法を知っていますか?

種類よろしく


私は単純な合計を試してみました。リスクファクターとコントロールとの間の関係を持っているとき、私はので、私はリスク表、例を挙げて参加し作られたビューを作成しました:

SELECT RK.NAME, 
     SUM(CASE WHEN RFC.RISKFACTOR IS NOT NULL THEN 1 ELSE 0) SUM_RK, 
     SUM(CASE WHEN RFC.CONTROL IS NOT NULL THEN 1 ELSE 0) SUM_CONTROL 
FROM T_RISK RK 
JOIN V_RF_CONTROL RFC 
ON RFC.RELATIONID = RK.RISKID 
+1

最初の2つのフィールドでグループ化し、3番目のフィールドをcount()します。 – tvm

+1

何か試しましたか? – Aleksej

+0

ええ、私は単純な合計を試しました。私はリスクファクターとコントロールの関係があるので、リスクテーブルとの結合を行ったときにビューを作成しました。例: SELECT RK.NAME、 SUM(ケース1の場合はRFC.RISKFACTORがNULLではない場合1を返します)SUM_RK 、 SUM(RFC.CONTROLがNULLでない場合は、THEN 1 ELSE 0)T_RISK RK FROM SUM_CONTROL がRFC.RELATIONID = RK.RISKID –

答えて

0

あなたがここに合計する必要はありません - あなただけの別個の値をカウントする必要があります。

SELECT RK.NAME, 
     COUNT(DISTINCT RFC.RISKFACTOR) SUM_RK, 
     COUNT(DISTINCT RFC.CONTROL) SUM_CONTROL 
FROM T_RISK RK 
JOIN V_RF_CONTROL RFC ON RFC.RELATIONID = RK.RISKID 
+0

ON V_RF_CONTROL RFC に参加ありがとうございました、あなたのクエリが働いていました –

関連する問題