2017-02-03 1 views
-1

Können Sie mir helfen, Daten der Spalte A an Stelle von null in Spalte3 einzufügen.So können Sie Daten einer Tabellenspalte in eine andere Tabellenspalte einfügen

Siehe Anhang.

TABLE TAB1 
-------------- 
col1 col2 col3 
5 7 NULL 
8 11 NULL 
3 6 NULL 
2 12 NULL 

TABLE TAB2 
----------- 
ColA CoB 
7  5 
18  8 
24  3 
36  2 

Wunsch Ausgabe wie

col1 col2 col3 
5 7 7 
8 11 18 
3 6 24 
2 12 36 

Diese commutative Summe genannt wird.

+0

Gibt es eine Spalte, die die Reihenfolge diktiert? – JohnHC

+0

Welche Version von SQL verwenden Sie? –

+0

Gibt es eine passende Spalte? Sind die Datensätze gleich? Wenn es keine übereinstimmende Spalte gibt, woher kennen Sie die Reihenfolge der Datensätze in beiden Tabellen? Wenn die Anzahl der Datensätze nicht übereinstimmt und keine Spalte für die Sortierung lautet, woher wissen Sie, welcher Wert wohin geht? – Pred

Antwort

0

Versuchen Sie folgendes:

Update tab1 
set Col3=tab2.ColA 
from tab1 
inner join tab2 on tab1.col1=tab2.colB 
1

1. Es ist Arbeit für einen Tisch.

Update TABELLENNAME gesetzt col3 = Col2

** 2. ** Für

INSERT in TAB1 (spalte1) select spalte1 aus tab2

eine Tabellenspaltendaten in eine andere Tabelle Einfügen
0

Von was ich sagen kann, möchten Sie eine kumulative Summe aus der zweiten Spalte:

with toupdate as (
     select t1.*, 
      sum(t1.col2) over (order by ??) as cume_col2 
     from tab1 t1 
    ) 
update toupdate 
    set col3 = cume_col2; 

Um eine kumulative Summe zu erstellen, benötigen Sie eine Spalte, die die Reihenfolge für die Summe angibt. Ihre Daten haben wie gezeigt keine passende Spalte.

EDIT:

Oh, ich verstehe. Die Bestellung kommt aus der zweiten Tabelle:

with toupdate as (
     select t1.*, 
      sum(t1.col2) over (order by t2.cola) as cume_col2 
     from tab1 t1 join 
      tab2 t2 
      on t1.col1 = t2.colb 
    ) 
update tab1 
    set col3 = toupdate.cume_col2 
    from tab1 join 
     toupdate 
     on tab1.col1 = toupdate.col1; 
Verwandte Themen