Kombination von doppelten Werten finden

Marnie

Grünschnabel
Hallo!

Ich habe folgendes Problem, wäre toll wenn mir jemand helfen könnte (SQL):

In meiner Datenbank habe ich vier Spalten in denen doppelte Werte vorkommen. Nun ist es so, dass ich den Zeilen, in denen die gleiche Kombination von Werten (in den vier Spalten) enthalten sind, in einer neuen Spalte die gleiche ID zuweisen möchte.

Mein Problem ist also, dass ich die Zeilen vergleichen muß und nicht die Spalten.

Ich bin für jeden Ratschlag / Idee sehr dankbar. :)

Liebe Grüße
Marnie
 
Zuletzt bearbeitet:
Hallo Marnie,

Wenn deine vier Spalten beispielsweise a,b,c und d heissen und deine neue Spalte "e", dann kannst du es so versuchen:

SQL:
update sptest 
   set e=1 
 where (a,b,c,d) IN 
      (select a,b,c,d 
         from sptest 
        group by a,b,c,d 
       having count(*) > 1);

Hoffe es hilft,

Markus
 
Hallo Markus,

Leider hats so nicht geklappt. Ich bekomme eine Fehlermeldung... :confused:
Trotzdem vielen lieben Dank!

Hat sonst jemand eine Idee?

Marnie
 
Ich programmiere SQL in SAS (Statistikprogramm). Es könnte natürlich auch an SAS liegen, vielleicht mag SAS einfach keine Subqueries...
 
Hallo Marnie,

poste doch mal die Fehermeldung. Vielleicht kann man doch eine andere Lösung finden, wenn man den genauen Fehlertext kennt.

Markus
 
Hallo Markus,

hier mal die komplette Fehlermeldung:

*******************************************************************************************************
178 proc sql;
179 UPDATE PFAD.Datei
180 SET zusatzspalte = zusatzspalte_tmp
181 WHERE (x1, x2, x3, x4) IN
-
22
---
202
FEHLER 22-322: Syntaxfehler, erwartet wird eines der folgenden: !, !!, &, (, ), *, **, +, -, '.',
/, <, <=, <>, =, >, >=, ?, AND, BETWEEN, CONTAINS, EQ, EQT, GE, GET, GT, GTT, IN,
IS, LE, LET, LIKE, LT, LTT, NE, NET, NOT, NOTIN, OR, ^, ^=, |, ||, ~, ~=.

FEHLER 202-322: Option oder Parameter ist nicht bekannt und wird ignoriert.

182 (SELECT x1, x2, x3, x4
183 FROM PFAD.Datei
184 GROUP BY x1, x2, x3, x4
185 HAVING count(*) > 1);
-
79
FEHLER 79-322: Erwartet wird ein(e) ).

186 quit;
HINWEIS: Das SAS System hat die Verarbeitung dieses Schritts aufgrund von Fehlern abgebrochen.
HINWEIS: PROZEDUR SQL benötigt. (Gesamtverarbeitungszeit):
Echtzeit 0.09 Sekunden
CPU-Zeit 0.01 Sekunden
187
*******************************************************************************************************

Bis einschließlich zu dem Befehl WHERE werden diese auch erkannt (sprich blau dargestellt).
Die Unterabfrage ist allerdings nicht farbig - damit hat SAS wohl seine Probleme...

Hast Du vielleicht noch einen anderen Lösungsansatz?

Viele Grüße
Marnie
 

Neue Beiträge

Zurück