Group by

alengel

Neuer Benutzer
Beiträge
2
Hallo,
erstmal meine Ausgangstabelle:

Kundennummer | Name | .........
------------------------------------------
000000000001 | test
000000000001 | test AG
000000000001 | test AG Bayern
000000000001 | test
usw.
000000000002 | Firma
000000000002 | Firma GmbH

Mein Problem:
Ich will alle Kundennummern nur ein einziges mal (also logischerweise am Ende ein GROUP BY Kundennummer), aber was mach ich mit dem Kundennamen? Imprinzip ist es volkommen egal, welchen Namen ich bei der Abfrage rausbekomme. Hauptsache ich hab am Ende:

Kundennummer | Name
-----------------------------------------
000000000001 | test AG (kann auch jeder andere Name sein, der in der Tabelle steht)
000000000002 | Firma

Ich hab schon stundenlang im Internet gesucht, könnt ihr mir da weiterhelfen?

Grüße Alex
 
Werbung:

PLSQL_SQL

SQL-Guru
Beiträge
176
Hy,

hier ein kleiner Lösungsvorschlag:

Code:
select distinct
          k.Kundenummer
         ,( select TOP 1 ksub.name from Kunden ksub where ksub.Kundennummer = k.Kundennummer )
 
   from Kunden k

Lg
 

Tommi

Datenbank-Guru
Beiträge
285
Hi,

das geht natürlich auch mit GROUP BY (was auch Performanter ist als ein Sub-Select):

SELECT k.kundennummer,
MAX(K.Name) as Kundenname
FROM Kunden K
GROUP BY K.Kundennummer


Wenn du einen speziellen Kundennamen benötigste (z.B. den ersten, der auftaucht), dann wird etwas schwieriger.
Dann geht es nur mit Unterabfrage. Diese Abfrage ermittelt den höchsten Wert im Feld Name. Sortierung erfolgt hier nach Reihenfolge von ASCII.
Funktioniert natürlich auch mit MIN().


Viele Grüße,
Tommi
 
Werbung:
Oben