2017-07-18 1 views
0

Ich habe eine Oracle-Tabelle dummy, die 3 Spalten reference_no, year und amount enthält.Wie Abfrageergebnis in eine andere Spalte, die von anderen Referenznummer aber dasselbe Jahr abhängt?

Meine Frage ist, wie jede Zeile zu vergleichen und die eine andere Spalte zu verschieben?

Ich habe Daten wie diese

+--------------+-------+--------+ 
| REFERENCE_NO | YEAR | AMOUNT | 
+--------------+-------+--------+ 
| A01   | 2010 | -100 | 
| A01   | 2011 | -100 | 
| A01   | 2012 | -100 | 
| B02   | 2012 | -2000 | 
| A01   | 2013 | -100 | 
| B02   | 2013 | -2000 | 
+--------------+-------+--------+ 

Aber das Ergebnis, das ich will, ist wie diese

+------+------------+------------+ 
| YEAR | AMOUNT A01 | AMOUNT B02 | 
+------+------------+------------+ 
| 2010 |  -100 |   | 
| 2011 |  -100 |   | 
| 2012 |  -100 |  -2000 | 
| 2013 |  -100 |  -2000 | 
+------+------------+------------+ 

Was ist der beste Weg, dies zu tun? Es ist wie Gruppierung nach Jahr und verschiebe die nicht gleiche Zeile in eine neue Spalte.

http://sqlfiddle.com/#!4/b1c7f7/3

Es tut uns leid. Mein Englisch ist schlecht. Dank

+1

Die Referenznummer A01 in 2012 3 Mal erscheint. Ist das richtig, wenn "die Referenznummer pro Jahr anders ist"? – JohnHC

Antwort

0

Sie würden PIVOT müssen die Daten wie hier beschrieben: https://www.techonthenet.com/oracle/pivot.php

SELECT * FROM 
(
    SELECT year, reference_no, amount 
    FROM dummy 
) 
PIVOT 
(
    SUM(amount) 
    FOR reference_no IN ('A01','B02') 
) 
ORDER BY year; 
+0

Ich versuche, den Rekord nicht zusammenzufassen. Es sollte in Form von Originalbetrag sein. – snso

+0

Was passiert also, wenn Ihre Daten zwei Datensätze für die gleiche reference_no und Jahr enthält? – Boneist

+0

Referenznummer ist einmalig pro Jahr – snso

1

Selbst beitreten

select a1.year, a1.amount as a01_amount, b2.amount as b02_amount 
from dummy a1 
left join dummy b2 
    on a1.year = b2.year 
    and b2.reference_no = 'B02' 
where a1.reference_no = 'A01' 
ORDER BY a1.year; 
+0

Was ist, wenn die Referenznummer dynamisch ist? Ich meine, es wird vielleicht C03 geben. – snso

Verwandte Themen