2017-01-09 8 views
0

ケース・ステートメント内で合計関数を使用しています。私は行の選択的な合計をしたい。ケース・ステートメント内の選択的な合計

case when 
type in ('A','B') 
then nvl(SUM(Amount_1),Amount) 
else Amount 

2つの列にはAmountとAmount_1があり、Amount_1列にはいくつかの条件C1に基づいていくつかの行が削除されます。例えば、私が10行にA型を持ち、条件C1に基づいて8行しか得られない場合は、8行に基づいてAmount_1列を合計したい。

答えて

2

私はあなたが基本的なロジックを正しく理解していると思いますが、あなたの構文は少しばかりです。 CASESUM()関数内に使用する必要があります。

SELECT type, 
     SUM(CASE WHEN type IN ('A', 'B') 
       THEN COALESCE(Amount_1, Amount) ELSE Amount END) AS type_sum -- ELSE 0 ? 
FROM yourTable 

これは、それ以外の場合は合計でAmountを使用する、typeABのいずれかであるそれらの記録のためにCOALESCE(Amount_1, Amount)の合計を計算します。一致しないレコードを何もカウントしない場合は、式のELSE 0を使用してクエリを変更します。