Komplizierte Distinct-Anwendung

dherr

Benutzer
Beiträge
11
Hallo zusammen,
ich habe die folgende Select-Anweisung in meinem Programm (VBnet):
Dim selStrAudioB As String = "SELECT Name, MP3ID, Zuordnung, Dauer, Bytes, " _
+ "CONVERT(VARCHAR(8000), Audio, 1) AS AudioC FROM " + tName10 + " ORDER BY Zuordnung, Name"
Im Detail möchte ich sie nicht erklären, sondern nur das Problem ansprechen:
In der zugehörigen Tabelle gibt es Datensätze mit gleichem "Name" Wert., also ein eventueller Distinct-Fall für die Anzeige der Sätze.
Doch das geht bei dem Aufbau der Select-Anweisung nicht! Denn alle andern Werte im Datensatz müssen angezeigt werden, wie sie in der Anweisung definiert sind.

Sieht jemand eine Möglichkeit, wie man die Dubletten eben nicht anzeigen kann?
Grüße - Dietrich
 
Werbung:
Also du willst pro Namen nur einen Datensatz anzeigen, die anderen Attribute können aber unterschiedlich sein. Du brauchst auf jeden Fall ein Sortier-Kriterium, denn man will ja vermutlich nicht einen zufälligen Datensatz anzeigen, sondern z.B. den mit der längsten Dauer.

Stellt sich die Frage, mit welchem DBMS wir es zu tun haben. Bei den umfangreicheren würde ich sagen mit einer Window-Funktion und einem verschachtelten Select. Etwa so:

Code:
 SELECT * FROM ( SELECT ROW_NUMBER() OVER (PARTITION BY Name ORDER BY Dauer DESC,MP3ID) AS zeile,* FROM tabelle ) t WHERE t.zeile = 1;
 
Zurück
Oben