Ik heb nu in SQL Server een tabel die een Primary Key heeft die is opgebouwd uit meerdere kolommen: ID en Versie.
Samen vormen die dus een unieke waarde, maar het ID kan dus wel in meerdere rijen voorkomen, maar dan met een ander versie-nummer.
Nu wil ik een select uitvoeren die ALLEEN de rijen selecteert met het hoogste versienummer.
Dus stel, ik heb deze gegevens:
Dan wil ik dus een select die ALLEEN 'Naam1.3, Naam2.2, Naam3.1' teruggeeft.
Ik heb nu wel een statement die de goede rijen selecteert, maar die selecteert alleen het ID en Versie nummer:
SELECT ID, MAX(Versie) FROM Namen GROUP BY ID
Ik neem aan dat ik dat statement moet gebruiken als subquery, maar hoe kan ik dan opgeven dat ie alleen de rijen moet selecteren die aan zowel het ID als aan het versienummer voldoen ?
Als ik iets opgeef als 'WHERE ID IN <statement> AND Versie IN <statement>', dan krijg ook bijv. Naam1.2 terug omdat ID=1 voorkomt EN Versie=2 komt voor.
Hoe kan ik dit oplossen ?
Samen vormen die dus een unieke waarde, maar het ID kan dus wel in meerdere rijen voorkomen, maar dan met een ander versie-nummer.
Nu wil ik een select uitvoeren die ALLEEN de rijen selecteert met het hoogste versienummer.
Dus stel, ik heb deze gegevens:
code:
1
2
3
4
5
6
7
| ID Versie Naam 1 1 Naam1.1 1 2 Naam1.2 1 3 Naam1.3 2 1 Naam2.1 2 2 Naam2.2 3 1 Naam3.1 |
Dan wil ik dus een select die ALLEEN 'Naam1.3, Naam2.2, Naam3.1' teruggeeft.
Ik heb nu wel een statement die de goede rijen selecteert, maar die selecteert alleen het ID en Versie nummer:
SELECT ID, MAX(Versie) FROM Namen GROUP BY ID
Ik neem aan dat ik dat statement moet gebruiken als subquery, maar hoe kan ik dan opgeven dat ie alleen de rijen moet selecteren die aan zowel het ID als aan het versienummer voldoen ?
Als ik iets opgeef als 'WHERE ID IN <statement> AND Versie IN <statement>', dan krijg ook bijv. Naam1.2 terug omdat ID=1 voorkomt EN Versie=2 komt voor.
Hoe kan ik dit oplossen ?