2016-05-21 10 views
1

Also ich möchte alle Datensätze mit distinct contractNo und die maximale VersionNo.wählen Sie mehrere Spalten mit maximal aus einer Spalte und deutlich auf einer anderen

So habe ich eine Tabelle wie folgt aus:

| username | contractNo | versionNo | 
|===================================| 
| lucian |  1  |  1  | 
| john  |  2  |  1  | 
| lucian |  2  |  1  | 
| kris  |  3  |  1  | 
| lucian |  1  |  2  | 
| david |  4  |  1  | 
| lucian |  1  |  4  | 
| adam  |  5  |  1  | 
| lucian |  2  |  2  | 
| kris  |  3  |  2  | 
| lucian |  3  |  1  | 
| lucian |  1  |  3  | 
| lucian |  1  |  5  | 
| lucian |  4  |  1  | 

und ich möchte die folgenden Datensätze wählen:

| username | contractNo | versionNo | 
|===================================| 
| lucian |  1  |  5  | 
| lucian |  2  |  2  | 
| lucian |  3  |  1  | 
| lucian |  4  |  1  | 

ich diese Frage haben, aber dies gibt nur sie in absteigender Reihenfolge geordnet nach contractNo und versionNo.

SELECT username, contractNo, versionNo 

FROM contracts 

WHERE useremail = 'lucian' 

order by contractNo, versionNo desc; 

Ich glaube, dass ich eine Art zu tun, von beitreten müssen, aber ich bin nicht sicher, wie.

Jede Hilfe wäre willkommen.

+0

Was ist Ihnen DBMS? – dnoeth

+0

Ich weiß nicht, was das ist. Ich führe meine Abfragen über SQL Developer durch, das ist das, was Sie gefragt haben. –

+0

Joins sind für 2 oder mehr Tabellen, aber Sie geben nur eine oben an. –

Antwort

1

sollte diese Arbeit:

SELECT 
    username 
    ,contractNo 
    ,MAX(versionNo) AS versionNo 
FROM contracts 
WHERE username = 'lucian' 
GROUP BY 
    username 
    ,contractNo 
ORDER BY contractNo ASC 

Genießen.

0

Verwendung in Klausel subselect und Gruppe von

SELECT username, contractNo, versionNo 
FROM contracts 
where (username, contractNo, versionNo) in 
     (select username, contractNo, max(versionNo) 
      from contracts group by username, contractNo) 
and username = 'lucian';