Ich versuche, eine Brücke Tabelle mit bestehenden numerischen IDs
(VARIABLE_ID
Feld) und Zeichenfolgen (DETAILS
Feld), die im Format averaged; smoothed
pro Zelle sind. Ich habe die Strings auf ;
mit REGEXP_SUBSTR
und CONNECT BY
aufgeteilt, die funktioniert. Wenn ich versuche, die Werte in die neue Tabelle einzufügen,PL/SQL: ORA-02287: Sequenznummer ist hier nicht erlaubt; DISTINCT Unterabfrage Probleme mit REGEXP und CONNECT BY
INSERT INTO PC_VARIABLES_DETAILS_BRIDGE (DETAIL_BRIDGE_ID, VARIABLE_ID, THE_DETAIL)
SELECT DISTINCT PC_VAR_DETAILS_BRIDGE_PK.NEXTVAL, e.VARIABLE_ID, TRIM(REGEXP_SUBSTR(e.DETAILS,'[^;]+', 1, LEVEL)) FROM (SELECT VARIABLE_ID, DETAILS FROM EG_VAR_UPLOAD_TEST WHERE DETAILS IS NOT NULL) e
CONNECT BY TRIM(REGEXP_SUBSTR(e.DETAILS, '[^;]+', 1, LEVEL)) IS NOT NULL;
erhalte ich die Fehler PL/SQL: ORA-02287: sequence number not allowed here
, was Sinn macht. Wenn ich DISTINCT
in den FROM
Satz nenne (SELECT DISTINCT VARIABLE_ID...FROM...
) läuft es aber ich bekomme einen grundlegend anderen Ausgang.
zu Ansprechende nur die SELECT
Klausel, was ich will, ist
SELECT DISTINCT e.VARIABLE_ID E_VARIABLE_ID, TRIM(REGEXP_SUBSTR(e.DETAILS,'[^;]+', 1, LEVEL)) THE_DETAIL FROM (SELECT VARIABLE_ID, DETAILS FROM EG_VAR_UPLOAD_TEST WHERE DETAILS IS NOT NULL) e
CONNECT BY TRIM(REGEXP_SUBSTR(e.DETAILS, '[^;]+', 1, LEVEL)) IS NOT NULL ORDER BY e.VARIABLE_ID;
die IDs
nur mehrere ergibt, wenn sie mit mehreren DETAILS
in einer Zelle zugeordnet sind (zB averaged; smoothed
), das ist, was ich will, und es läuft:
Aber noch einmal, wenn ich Nest DISTINCT
in die FROM
Klausel, erhalte ich mehrere IDs
und mehrere DETAILS
(in der Tat, die Gesamtzahl der Zeilen übereinstimmt, dass die Tabelle sind sie in):
Gibt es etwas unter der Haube Ich bin nicht sehend? Was fehlt mir hier?
Das tat es - danke! Ich würde wahrscheinlich irgendwann hinkommen, aber ich dachte, es wäre schneller, euch zu fragen (war es). Als richtig gekennzeichnet. – snl330