2016-08-27 8 views
0

重複しているテーブルがあります。私は別々のレコードを数えて合計ボリュームを得ることができます。 CompTiaコードがB92のときに合計しようとすると、distinctを実行すると、それでもダイエットはカウントされます。ここでTeradataで重複しているテーブル内の異なるレコードの合計

はクエリです:

select 
a.repair_week_period, 
count(distinct a.notif_id) as Total_Volume, 
sum(distinct case when a.header_comptia_cd = 'B92' then 1 else 0 end) as B92_Sum 
FROM artemis_biz_app.aca_service_event a 
where a.Sales_Org_Cd = '8210' 
and a.notif_creation_dt >= current_date - 180 
group by 1 
order by 1 
; 

はB92のための明確な記録のみSUMする方法はありますか?

別の通知IDを選択してその通知IDに参加することで、内部的にテーブルを結合しようとしましたが、まだ間違った合計カウントが発生しました。

ありがとうございます!

+4

サンプルデータと期待される結果はnotif_idがレコードとして1または1以上のいずれかとすることができるテーブルではより良く理解 –

答えて

0

B92_Sumは現在NULL,または2のいずれかを返します。これは間違いありません。このcolumn_to_sumは実際にあなたが条件付きの数ではなく、合計を取得notif_idある場合は、

sum(distinct case when a.header_comptia_cd = 'B92' then column_to_sum else 0 end) 

のようなものを必要とする個別の値を合計する

そうでない場合は個別のは、あまりにも多くのバレスを削除する可能性があり、あなたはおそらくあなたが集計する前に重複を削除派生テーブル必要があります、私の問題を解決するには、データをSUMすることはなかったようだ@dnoeth

select 
    repair_week_period, 
    --no more distinct needed 
    count(a.notif_id) as Total_Volume, 
    sum(case when a.header_comptia_cd = 'B92' then column_to_sum else 0 end) as B92_Sum 
FROM 
(
    select repair_week_period, 
     notif_id 
     header_comptia_cd, 
     column_to_sum 
    from artemis_biz_app.aca_service_event 
    where a.Sales_Org_Cd = '8210' 
    and a.notif_creation_dt >= current_date - 180 
    -- only onw row per notif_id 
    qualify row_number() over (partition by notif_id order by ???) = 1 
) a 
group by 1 
order by 1 
; 
+0

で私たちを助ける以上のものを持つことができます1つはnotif_idです。私がsumを実行しようとすると(別のケースでは、a.header_comptia_cd = 'B92'、次にcolumn_to_sum else 0 end)。 column_to_sumが見つからないというエラーが表示されます。 – txwylde

+0

@txwylde:もちろん、「column_to_sum」はありません。これはあなたが合計しようとしているあなたの列です。いくつかのサンプルデータと期待される結果(背後の論理を含む)がなければ、それ以上はあなたを助ける方法がありません。 – dnoeth

+0

サンプルデータを貼り付けるのに時間がかかりすぎます。 notif_idは次のようになります。030249365316 header_comptia_cdはB81のようになります。レコードは、異なるnotif_idとheader_comptia_cd、または複数のnotif_idとheader_comptia_cdのいずれかを持つことができます。 – txwylde

0

をしかしcountdistinctです。

これは私が私の問題を解決する方法である:

count(distinct case when a.header_comptia_cd = 'B92' then a.notif_id else NULL end) as B92_Sum 
関連する問題