2016-05-02 7 views
-4

私のデータには、成功と失敗の両方のトランザクションが含まれています。純資産はi.e. success-failure = netです。 (SQLのみを使用)データからの成功カウントのみを抽出する

id  product txn_num amount 
1  sale  6737  40 
2  failure f6737  -40 
3  sale  5635  70 
4  sale  3467  80 
5  failure 3467  -80 
6  sale  3468  80 
7  failure 3468  -80 

私のデータは構造化されていません。 SQLを使用してtxn_numのバリエーションを考慮して純額を計算したいとします。 IF製品が故障した場合は、販売行で取り除く必要があり、金額を結果に含める必要はありません。 しかし、問題は、データの失敗トランザクション番号が 'f'記号で始まっていないことです。 この問題を解決する唯一の方法は、amounttxn_numの両方の列を比較してネットの結果を得ることです。

これはSQLのみを使用して解決します。

結果は、トランザクションが同じtxn_numが、負amountとの新しい行があります取り消され

count=1, Amount=70, product=sale, id=4 
+2

のplsはあなたの望ましい結果がどうあるべきいただきまし – Sachu

+1

うう...何があなたのテーブルに基づく成功または失敗としてカウント示し?? – Coderchu

+3

あなたはすでに試したことを挙げるセクションを含めるべきです。ちょうど "SQLのみを使用して解決する"と言うと、ここにコピー&ペーストした学校の割り当てがあります。 –

答えて

0

すべきですか? だから、単に単一の行でtxn_numを検索するために持っているかSUM(amount) <> 0

select 
    min(id), min(product), txn_num, sum(amount) 
from tab 
group by txn_num 
having sum(amount) <> 0 -- or count(*) = 1 
関連する問題