2016-04-25 7 views
1

Ich benötigte einen Hinweis bezüglich einer SQL-Anweisung, die mit DB2 und Oracle ausgeführt werden muss.So fügen Sie einer vorhandenen Datenbanktabelle eine Spalte mit bestimmten Werten hinzu

Vor einiger Zeit wurde eine Datenbanktabelle ohne ID-Spalte eingerichtet. Das Hinzufügen der ID-Spalte ist nicht das Problem, aber ich muss unbedingt die Zeilennummer jeder Zeile ausfüllen. Ich fand heraus, dass rank() perfekt wäre, aber hier kann ich nicht für bestimmte Werte auswählen, weil ich dann immer den Wert '1' bekomme.

Bei der Einstellung ich eine Zwischentabelle, wie unten beschrieben, I-Ausgang alle Daten, die ich

WITH MY_TEMP_TABLE AS 
(
    SELECT RANK() OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND 
    FROM SECOND_TABLE 
) 
SELECT * 
FROM SECOND_TABLE 
INNER JOIN MY_TEMP_TABLE ON SECOND_TABLE.CODE=MY_TEMP_TABLE.CODE 

brauchen Wie ist es möglich, die ID-Spalte in der Datenbanktabelle zu aktualisieren (hier: SECOND_TABLE) mit die Werte in MY_ROW?

Vielen Dank ...

+0

, was meinen Sie, dass Sie immer den Wert 1 bekommen? Woher bekommst du den Wert 1? in meiner_Werbe? –

+0

Ich denke, Sie wollen [ROWNUMBER()] (https://msdn.microsoft.com/en-us/library/ms186734.aspx) anstatt RANK(). – nscheaffer

+0

SELECT ROWNUMBER() OVER (ORDER BY CODE ASC) My_Row, CODE, Land von BDV_KFWSTAAT
zurückkehrt mehr als 200 ergibt, von denen jeder eine unterschiedliche Anzahl
SELECT ROWNUMBER() OVER (ORDER BY CODE ASC) My_Row hat, CODE, LAND VON BDV_KFWSTAAT wo Code = 'DE'
gibt den Wert '1' nicht in Bezug auf, wo ich verwende. Auf diese Weise kann ich nicht zwischen den Ergebnissen unterscheiden. Das Problem ist das gleiche mit Rang() und Rownumber() – Oliver

Antwort

1

Verwenden row_number() anstelle von Rang():

WITH MY_TEMP_TABLE AS 
(
    SELECT row_number() OVER (ORDER BY CODE ASC) MY_ROW, CODE, LAND 
    FROM SECOND_TABLE 
) 
SELECT * 
FROM SECOND_TABLE 
INNER JOIN MY_TEMP_TABLE ON SECOND_TABLE.CODE=MY_TEMP_TABLE.CODE 
+0

Danke euch allen bisher. .. Mein Problem geht etwas tiefer ... Wie ist es möglich, die Ausgabe dieses Codes mit einer "update" -Anweisung zu kombinieren, um die Daten in SECOND_TABLE.ID zu füllen? Ich brauchte daher einen Beispielcode. – Oliver

+0

Kannst du keine neue Tabelle erstellen und richtig ausfüllen? –