2017-02-07 19 views
0

トランザクションをカウントし、ハイブの文がある場合にそれらにラベルを付けることを試みるIm。 succesfullの取引のための1が返されないながら文は結果を返すとき部分集合と全体集合の場合のケース

select case  
    When PROTOCOLID = 61002 AND TRANS_TYPE = "succesfull" THEN "X" 
When PROTOCOLID = 61002 AND (TRANS_TYPE ="succesfull" or TRANS_TYPE ="failed") THEN "Y" 
    end as name, sum(count) 
from tab1 
group by name 

は、しかし、これまでのところそれだけ広い(succesfullの+が失敗した)ようです。

EDIT:私がクエリを処理するほど、最初の場所に置いたときの状態を常に返すようです。それは

(succesfuul +が失敗した)
7トランザクションsuccesfullの
3トランザクションの合計:だから私は、合計に10のトランザクションを持っていると言うと、最初の成功トランザクションの条件、私はfolowsとして結果を取得するときにケースを置くことができますグループのように見えるのはトラブルの原因となるものです

+0

@scaisEdge私は、両方のタイプのトランザクションがあることがわかります。成功したトランザクションとすべてのタイプのトランザクションの個数を合計すると、結果が得られます –

答えて

0

Hmmm。私が使用してこの情報を得るでしょう:

select count(*) as cnt_total, 
     sum(case when trans_type = 'successful' then 1 else 0 end) as cnt_success  
from tab1 
where trans_type in ('succesful', 'failed') and 
     protocolid = 61002; 

私の疑惑は、しかし、あなたは、単に「成功し」スペルが間違っていることです。

+0

クエリ全体が集計テーブルからデータを引き出すためのビューを作成しますprotocolid = 61002以上であるので、私はそのケースをいつ使用しようとしていたのですか。スペルを確認し、その大丈夫、私の英語のために申し訳ありませんが、私の悪い! –

+0

複数のprotocol_id値があり、trans_typeに対してのみ成功/失敗した場合は、selectにprotocol_idを追加し、それをグループ化してください。 – Andrew

+0

@Andrewはチップのおかげで、残念ながら私は成功/失敗/不明を持っていた –

関連する問題