2016-10-04 3 views
0

Ich habe versucht, eine Abfrage für GROUP BY CODE zu erstellen, so dass CCC zum Beispiel nur einmal angezeigt werden sollte, und auch den Namen mit der höchsten Anzahl auswählen. Kann mir jemand in die richtige Richtung zeigen? DankAuswählen der maximalen Anzahl an anderen Spalten

Deshalb möchte ich meine Frage zurückzukehren:

AAA Lee, Albert  
BBB Robert, Steven 
CCC Jones, Albert 
DDD Lim, Kevin  
EEE Zhang, Wil  

ODER

AAA Lee, Albert  12 
BBB Robert, Steven 4 
CCC Jones, Albert 3 
DDD Lim, Kevin  21 
EEE Zhang, Wil  11 

aus der Verwendung von Beispieldaten:

CODE NAME    Count 

AAA Lee, Albert  12 
BBB Robert, Steven 4 
CCC Robert, Steven 2 
CCC Jones, Albert 3 
DDD Lim, Kevin  21 
EEE Zhang, Wil  11 
EEE Wil Zhang  5 
+1

welche Datenbank-Engine und Version auswählen, verwenden Sie? – Lamak

+1

Bitte geben Sie die RDBMS, die Sie verwenden, und die SQL, die Sie bisher versucht haben – EoinS

+0

@Lamak Sorry ich verwende Microsoft SQL Server. – mezzoforte006

Antwort

0

Sie konnten die Tabelle mit sich selbst LEFT JOIN und die Ergebnisse

SELECT t1.* FROM Data AS t1 
LEFT JOIN Data AS t2 
ON 
(t1.CODE = t2.CODE) AND (t1.Count < t2.Count) 
WHERE t2.Count is null 

http://sqlfiddle.com/#!6/cc2ea/4

+0

Das hat bei mir funktioniert. Vielen Dank AminTN :) – mezzoforte006

1

Die Standard-SQL-Methode verwendet die ANSI-Standard row_number() Funktion :

select s.* 
from (select s.*, 
      row_number() over (partition by code order by count desc) as seqnum 
     from sample s 
    ) s 
where seqnum = 1; 
+0

Als Sie für Ihre Antwort, ich bin immer noch ziemlich neu in SQL Server, ich habe versucht, es mit einer Unterabfrage zu lösen, die mir die MAX (COUNT) bringen kann, wissen Sie, wie es mit einer HAVING-Klausel zu lösen? – mezzoforte006

Verwandte Themen