2016-12-09 10 views
0

Ich muss eine Abfrage schreiben, in der ich Bedingung auf zwei Spalten setzen und dann den Datensatz in der dritten Spalte auf der Grundlage der ersten beiden Spalten aggregieren muss. Sie können eine Idee aus der Datenbanktabelle haben. Dies ist meine DatenbanktabelleWie Datensätze von zwei Spalten mit gleichen Werten in zwei Spalten in Postgresql

[![Advisers Table][1]][1] 

Nun, was ich will, ist, dass, ich habe Top-Finanzberater zu finden und aggregieren die Summe der Transaktionsvolumen zum Beispiel suppose Nitish wird in zweimal erscheinen, In Tabelle 1 in financial_adviser und in target_adviser in verschiedenen Zeilen kann nitish nicht in einer Zeile zwischen financial_adviser und target_adviser stehen, und der Wert in deal_volume für nitish ist 100 bzw. 200. so Nitish sollte mit deal_volume als 300

So für diese Tabelle ein Finanzberater sein das endgültige Ergebnis nach Ausführung der Abfrage sollte wie

[![Financial Advisers table][1]][1] 

Ich bin mit postgresql versucht, dieses Ergebnis zu holen aber hat nicht das richtige Ergebnis bekommen.

+0

Tun Sie eine UNION ALL, GROUP BY sein Ergebnis. – jarlh

+0

können wir es in einer einzigen Abfrage tun? – Pankaj

Antwort

0
SELECT advisors, 
    sum(deal_volume) AS dealVolume from 
     (SELECT target_adv AS "advisors", deal_volume 
      FROM ma_global 
      UNION ALL SELECT acq_adv AS "advisors", deal_volume 
     FROM ma_global) ma_global 
GROUP BY advisors 
ORDER BY dealVolume DESC 
+0

Wie gesagt. Gute Arbeit! – jarlh

+0

Danke, dass du mir eine Idee gegeben hast :) – Pankaj

Verwandte Themen