2016-11-02 7 views
1

Hypothetisch möchte ich zwei Tabellen aus verschiedenen Datenbanken in einer Tabelle verschmelzen, die alle Daten aus den zwei Tabellen enthält:Merge 2 Tabellen aus verschiedenen Datenbanken

enter image description here

Das Ergebnis wie etwas würde wie folgt aussehen :

enter image description here

sind in der Ergebnistabelle nicht die Einträge überflüssig, denn es gibt zwei Einträge mit Porsche und VW sind? Oder kann ich einfach die Werte in der Spalte 'stock' hinzufügen, weil die Spalte 'Mark' explizit ist?

+1

Bitte markieren Sie Ihre Frage mit RDBMS Sie verwenden – Kacper

+1

Warum Sie dies nicht tun Gruppe von 'Mark'? –

+0

Sind die Datenbanken in derselben SQL Server-Instanz? –

Antwort

0

Versuchen Sie folgendes:

Select Mark, Stock, row_number() over(order by Mark desc) from table1 
union all 
Select Mark, Stock, row_number() over(order by Mark desc) from table2 
0

unabhängig von der Datenredundanz, Sie union all Klausel dies zu erreichen, verwenden könnte. Wie:

Select * From tableA UNION ALL Select * From tanleB

Sicherstellen, dass die Gesamtzahl der Spalten und Datentyp sollte zwischen den einzelnen

0

abgestimmt werden Vergessen Sie nicht voll qualifizierten Tabellennamen zu verwenden, wie die Tabellen in unterschiedlichen Datenbanken sind

SELECT 
Mark 
,Stock 
FROM Database1.dbo.table1 

UNION ALL 

SELECT 
Mark 
,Stock 
FROM Database2.dbo.table2 
1

ich hoffe, dies wird Ihnen helfen,

0

Wenn es sich um 2 Live-Datenbanken handelt und Sie ständig Zeilen aus den 2 Datenbanken in Ihre neue Datenbank einfügen müssen, sollten Sie die Tabelle in Ihrer 3. Datenbank lieber als Ansicht betrachten.

Auf diese Weise können Sie auch eine Spalte hinzufügen, die angibt, aus welchem ​​System der Datarow stammt. Das Summieren der Werte ist eine Option, aber wenn Sie jemals eine Frage bezüglich eines falschen summierten Werts haben, wie würden Sie wissen, welches System der Schuldige ist?

0
  1. Sie benötigen Datenbank Link auf eine andere Datenbank zu erstellen ist hier das Beispiel dafür, wie Datenbank-Link http://psoug.org/definition/create_database_link.htm nach dem select-Anweisung aus einer anderen Datenbank erstellen Erstellen aussehen sollte: select * from [email protected]"database_link_name"
  2. Dann brauchen Sie MERGE-Anweisung zu verwenden, um push Daten aus einer anderen Datenbank, so dass die Zusammenführungs-Anweisung in etwa so aussehen sollte.
  3. Sie können Aussage hier fusionieren lesen: https://docs.oracle.com/cd/B28359_01/server.111/b28286/statements_9016.htm#SQLRF01606

     
    
    merge into result_table res 
    using (select mark, stock, some_unique_id 
         from result_table res2 
         union all 
         select mark, stock, some_unique_id 
         from [email protected]"database_link_name") diff 
    on (res.some_unique_id = diff.some_unique_id) 
    when matched then 
        update set res.mark = diff.mark, 
           res.stock = diff.stock 
    when not matched then 
        insert 
        (res.mark, 
         res.stock, 
         res.some_unique_id) 
        values 
        (diff.mark, 
         diff.stock, 
         diff.some_unique_id); 
    

Verwandte Themen