# Kombination von doppelten Werten finden



## Marnie (15. Juni 2007)

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


----------



## lmarkus31 (15. Juni 2007)

Hallo Marnie,

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


```
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


----------



## Marnie (15. Juni 2007)

Hallo Markus,

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

Hat sonst jemand eine Idee?

Marnie


----------



## lmarkus31 (15. Juni 2007)

Hallo Marnie,

ich bekomme keine Fehlermeldung. Welche Datenbank und welche -version verwendest du denn?

Markus


----------



## Marnie (15. Juni 2007)

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


----------



## lmarkus31 (15. Juni 2007)

Hallo Marnie,

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

Markus


----------



## Marnie (18. Juni 2007)

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


----------

