2017-01-19 3 views
-2

Hallo Ich habe versucht, die Folgendes zu erreichen:Oracle alle zwei Datensätze in einem

key1, key2, val1, userid, receipttype, val2,val3,val4,date,val5 
1 0 0 1 3 0 0 0 18-JAN-17 1 
1 0 0 1 4 0 0 0 18-JAN-17 1 
1 0 0 114 3 0 0 0 18-JAN-17 1 
1 0 0 114 4 0 0 0 18-JAN-17 1 
1 0 0 1 3 0 0 0 18-JAN-17 1 
1 0 0 1 4 0 0 0 18-JAN-17 1 

Diese Tabelle Ich versuche, irgendwie zu erhalten folgende Ergebnisse:

key1, key2, val1, userid, receipttype, val2,val3,val4,date,val5,key1, key2, val1, userid, receipttype, val2,val3,val4,date,val5 
1,0,0,1,3,0,0,0,18-JAN-17,1 1,0,0,1 4,0,0,0,18-JAN-17,1 
1,0,0,114,3,0,0,0,18-JAN-17,1 1,0,0,114 4,0,0,0,18-JAN-17,1 

arbeite ich viel mit inneren Verbindungen, aber das wird mir hier definitiv nicht helfen. Ich habe mit Pivot gearbeitet, aber das scheint mir auch nicht wirklich zu helfen.

Nicht ganz sicher, was ich verwenden könnte, um die gewünschten Ergebnisse zu erzielen.

Also muss ich zwei Datensätze in eins paaren. Für jeden Datensatz, der eine 3 hat, muss ich es mit einem zweiten Datensatz, der eine 4 hat paaren und die Benutzer-ID muss auch gleich sein.

Danke,

Antwort

0

Alles, was Sie brauchen, ist eine innere Verbindung. Sie müssen Ihre Tabelle zweimal auflisten.

Angenommen, Ihre Tabelle wird tbl genannt:

SELECT a.key1, b.key1 
FROM tbl a INNER JOIN tbl b ON a.userid = b.userid 
WHERE a.receipttype = 3 
AND b.receipttype = 4 
+0

Hallo WW wäre nicht eine innere Verknüpfung nicht in dem Fall arbeiten, wo es mehrere Datensätze mit Benutzerkennung von 1 sind? – chancelance

+0

Wenn es mehrere Datensätze gibt, wie erwarten Sie, dass sie gepaart werden? Was entscheidet, was mit was geht? Oder möchten Sie das Ergebnis auf eine Zeile reduzieren? –

+0

Ich bestelle nach Datum, also für jede 3 sollte es gepaart 4. UserID 1 Datensatz hat 3 Datensatz hat 4 Diese sind nach Datum sortiert und diese beiden sollten gepaart werden. Aber es könnte mehrere UserIDs von 1 geben, das ist der schwierige Teil. Mit anderen Worten, für jeweils zwei Datensätze muss ich sie zusammenhalten. – chancelance

Verwandte Themen