Ik moet een query genereren waarin een aantal gegevens getoond worden, waarbij er altijd 1 column een "hoofdwaarde" bevat. Bv
De gegevens in de kolommen Naam en Locatie komen uit een tabel, echter de gegevens uit de kolom Positie bestaan nu niet en moeten in een query aan de resultset worden toegevoegd. De uitvoer van deze query vindt plaats in een Stored Procedure op MSSQL.
Aangezien er maximaal 10-20 posities kunnen voorkomen heb ik een tijdelijke tabel aangemaakt met daarin 20 regels: 1 tot en met 20.
Deze moet ik dus op een of andere manier joinen met de data-tabel op een dusdanige manier dat er als het ware gegroepeerd wordt op Naam en vervolgens bij elke nieuwe naam de nummering weer opnieuw begint.
Ik ben al even aan het stoeien met een statement hiervoor, maar kom er niet helemaal uit. Als ik op woorden als sequence, group, number etc zoek op google krijg ik van alles te zien hoe je een lijst kan bouwen met een oplopende nummering, maar niet hoe ik deze in een bestaande resultset per gegroepeerde items kan invoegen.
Zoals gezegd heb ik lopen stoeien met joins want volgens mij moet ik die gebruiken om die 2 tabellen aan elkaar te knopen, maar kom er met zowel een left, cross of inner join niet uit, aangezien ik niet echt iets heb om te joinen.
Als ik de 2 tabellen met een left join join bv, krijg ik de gegevens uit de tabel gecombineerd met alle 20 regels uit de tijdelijke tabel. Zo krijg ik voor bovenstaand voorbeeld dus 160 records terug. Al met al kom ik er niet uit.
Heeft iemand voor mij tips waarmee ik verder kan?
Mocht dit niet in 1 statement lukken kan ik er altijd met een cursor doorheen gaan en de kolom updaten, maar dit heeft uiteraard niet mijn voorkeur.
| Naam | Locatie | Positie |
| Loc A | Amsterdam | 1 |
| Loc A | Eindhoven | 2 |
| Loc A | Rotterdam | 3 |
| Loc B | Amsterdam | 1 |
| Loc B | Eindhoven | 2 |
| Loc B | Rotterdam | 3 |
| Loc C | Rotterdam | 1 |
| Loc C | Groningen | 2 |
De gegevens in de kolommen Naam en Locatie komen uit een tabel, echter de gegevens uit de kolom Positie bestaan nu niet en moeten in een query aan de resultset worden toegevoegd. De uitvoer van deze query vindt plaats in een Stored Procedure op MSSQL.
Aangezien er maximaal 10-20 posities kunnen voorkomen heb ik een tijdelijke tabel aangemaakt met daarin 20 regels: 1 tot en met 20.
Deze moet ik dus op een of andere manier joinen met de data-tabel op een dusdanige manier dat er als het ware gegroepeerd wordt op Naam en vervolgens bij elke nieuwe naam de nummering weer opnieuw begint.
Ik ben al even aan het stoeien met een statement hiervoor, maar kom er niet helemaal uit. Als ik op woorden als sequence, group, number etc zoek op google krijg ik van alles te zien hoe je een lijst kan bouwen met een oplopende nummering, maar niet hoe ik deze in een bestaande resultset per gegroepeerde items kan invoegen.
Zoals gezegd heb ik lopen stoeien met joins want volgens mij moet ik die gebruiken om die 2 tabellen aan elkaar te knopen, maar kom er met zowel een left, cross of inner join niet uit, aangezien ik niet echt iets heb om te joinen.
Als ik de 2 tabellen met een left join join bv, krijg ik de gegevens uit de tabel gecombineerd met alle 20 regels uit de tijdelijke tabel. Zo krijg ik voor bovenstaand voorbeeld dus 160 records terug. Al met al kom ik er niet uit.
Heeft iemand voor mij tips waarmee ik verder kan?
Mocht dit niet in 1 statement lukken kan ik er altijd met een cursor doorheen gaan en de kolom updaten, maar dit heeft uiteraard niet mijn voorkeur.