2016-05-02 12 views
-4

Meine Daten enthalten sowohl Erfolgs- als auch Fehlertransaktionen. Ich brauche nur Nettozahlen i.e. success-failure = net. (Nur mit sql)Nur erfolgreiche Zählungen aus Daten extrahieren

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 

Meine Daten sind nicht strukturiert. Ich möchte Nettobetrag unter Berücksichtigung der Variation in txn_num mit SQL berechnen. Wenn das Produkt fehlerhaft ist, muss es mit der Verkaufszeile entfernt werden und die Menge muss nicht im Ergebnis enthalten sein. Aber Problem ist, in Datenausfall Transaktionsnummer nicht mit 'f' Symbol beginnen. Die einzige Möglichkeit, dieses Problem zu beheben, vergleichen Sie beide amount und txn_num Spalte, um Nettoergebnis zu erhalten.

Lösen Sie es nur mit SQL.

Ergebnis sollte

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

pls zeigen, was Ihr gewünschtes Ergebnis sein sollte – Sachu

+1

Uhh ..., was als Erfolg oder Misserfolg der Grundlage Ihrer Tabelle ?? – Coderchu

+3

Sie sollten einen Abschnitt enthalten, in dem Sie angeben, was Sie bereits versucht haben. Wenn du nur sagst: "Löse es mit sql only", klingt es so, als wäre es eine Schulaufgabe, die du hier kopierst und eingefügt hast. –

Antwort

0

werden, wenn eine Transaktion abgebrochen wird dort ist eine neue Zeile mit den gleichen txn_num aber einem negativen amount? So haben Sie einfach ein txn_num mit einer einzigen Zeile zu suchen oder ein 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