2016-04-05 13 views
-1

bitte ich habe eine Tabelle wiewie Datum Orakel auszutauschen

customer_no product_code 
1345   001 
1345   002 
1345   003 

i eine neue Tabelle wollen, die mir diese Details

customer_no product_code, product_code 
1345   001    002 
1345   001    003 
1345   002    001 
1345   002    003 
1345   003    001 
1345   003    002 
+3

Sie wollen also das kartesische Produkt eines Selbst (Cross) beitreten? Sind Sie sicher, dass Sie eine Tabelle mit einem statischen Snapshot benötigen und keine Ansicht, die auf dem neuesten Stand ist? –

+1

@Alex Poole - Das sieht für mich nicht wie ein kartesisches Produkt aus. – mathguy

+0

@mathguy - nein, du hast natürlich recht, schau es dir nochmal an - das hätte neun Zeilen. Ich fragte meistens nach der Klärung der Anforderung, eindeutig das Fehlen einer Beschreibung verwirrte mich ... –

Antwort

1

Dies gibt Ihnen die gewünschte Ausgabe zeigen.

create yourNewTableName as (
    select t1.customer_no, 
      t1.product_code, 
      t2.product_code 
    from yourOldTableName t1 
    inner join yourOldTableName t2 
     on t1.customer_no = t2.customer_no 
    where t1.product_code != t2.product_code 
); 
+0

Wie wäre es mit Modification 'inner Join yourOldTableName t2 auf t1.Product_Code! = T2.Product_Code' und Beseitigung wo Bedingung. –

+0

... oder nur das 'wo' zu' und' ändern, obwohl das keinen praktischen Unterschied macht. Es ist nicht unvernünftig zu denken, dass die realen Daten mehrere "cusother_no" -Werte haben und annehmen, dass die Verknüpfung eingeschränkte Produkte innerhalb eines Kunden sein sollten, aber es ist in der Frage nicht klar. –

+0

Vielen Dank. Info war so nützlich –