2017-10-03 3 views
1

Werte mit Prozentangaben multipliziert Ich habe zwei Tabellen wie folgt strukturiert:Aktualisierungswerte in einer meiner Tabelle auf Bedingungen

Tabelle 1:

CREATE TABLE "SYSTEM"."ZILM_SM30_BT_ALL" 
("BT" VARCHAR2(6 BYTE) NOT NULL ENABLE, 
"CHANNEL" VARCHAR2(12 BYTE), 
"PARENT" VARCHAR2(12 BYTE), 
"VD" VARCHAR2(15 BYTE), 
"CURRENCY" VARCHAR2(3 BYTE), 
"AMT" NUMBER(18,2), 
"FXSWAP" NUMBER(18,2), 
"STR_REPO" NUMBER(18,2), 
"REPORTING_DAY" DATE); 

Table1

Tabelle 2:

CREATE TABLE "SYSTEM"."ZILM_SM30_BT_RF" 
("BT" VARCHAR2(6 BYTE) NOT NULL ENABLE, 
"RF" NUMBER(5,4) NOT NULL ENABLE, 
"RATIONALE" VARCHAR2(80 CHAR)); 

Table2

Ich muss Spalte STR_REPO in Tabelle 1 mit dem Ergebnis des entsprechenden Werts in AMT in Tabelle 1 multipliziert mit dem Wert in RF in Tabelle 2 aktualisieren. Der RF-Wert in Tabelle 2, der als Faktor verwendet wird, ist der von der Eintrag mit dem gleichen BT-Wert wie in Tabelle 1 (Beispiel: für die Zeile 1 in Tabelle 1: STR_REPO = 162.500.000 * 0,3333 -> (lookup Wertes in RF Spalt von Tabelle 2 für die Eingabe mit BT="REP")

Was ich habe derzeit ist:

UPDATE ZILM_SM30_BT_ALL 
SET STR_REPO = (SELECT a.AMT * b.RF 
FROM ZILM_SM30_BT_ALL a INNER JOIN ZILM_SM30_BT_RF b 
ON a.BT = b.BT) 

Die Fehlermeldung ich erhalte, ist:

UPDATE ZILM_SM30_BT_ALL 
SET STR_REPO = (SELECT a.AMT * b.RF 
FROM ZILM_SM30_BT_ALL a INNER JOIN ZILM_SM30_BT_RF b 
ON a.BT = b.BT) 

Error report: SQL Error: ORA-01427: single-row subquery returns more than one row 01427. 00000 - "single-row subquery returns more than one row"

Antwort

0

Sie aus der Fehlermeldung sehen, Ihre innere Abfrage zurückgeben mehr als eine Zeile, die für eine Update-Anweisung nicht gültig ist.

Sie benötigen eine korrelierte Abfrage zu verwenden, sind die Werte der Zieltabelle zur Verfügung:

UPDATE ZILM_SM30_BT_ALL a 
SET a.STR_REPO = a.AMT * (SELECT b.RF 
          FROM ZILM_SM30_BT_RF b 
          WHERE a.BT = b.BT) 
+0

Danke. Deine Hilfe ist sehr Willkommen! – ehammer

Verwandte Themen