Ik ben helemaal geen programmeur, maar wegens nood toch maar een stukje maatwerk aan het bouwen. Dat gezegd hebbende heb ik desondanks toch m'n programmatje bijna af en zit nog met één kleinigheidje.
Wat doe ik:
Ik bouw een .aspx pagina op onze intranet site welke in een tabel op onze SQL server een reeks klanten opzoekt op basis van één van drie velden: klantnummer, postcode en serienummer. De gegevens van deze klanten komen uit drie tabellen en heb ik met een aparte stored procedure uit die verschillende tabellen gehaald en in een door mij voor mij gemaakt tabelletje "weekendklanten" geparkeerd. Hier gaat het nog steeds goed, maar ik wil meer dan de gegevens 1 op 1 overnemen.
De laatste twee velden in de betreffende tabel wul ik met Dekkingstype en Provider. Uit 2 van de 3 klanttabellen komen de dekkingstypes in plain-text en hoeven dus niet bewerkt te worden, de providers komen echter als nummertje tevoorschijn en moeten met een Case statement vervangen worden door lappies tekst.
Die Case ziet er ongeveer zo uit:
enzovoorts. Dit gaat prima, want klproviderid is een numeriek veld.
De derde tabel bevat geen provider code, hier zet ik dus altijd hard de tekst met de provider naam in. Echter, het dekkingstype hier bestaat uit een tekstveld met merdere codes, van vierletters en één of geen cijfers eraanvast. Bevat deze tekst de code "GEGA" dan moet de tekst in de kolom "Gegarandeerd" worden, en anders "Best Effort"
De case zou er dan zo uitzien:
Maar dit gaat dus niet: invalid syntax near like. Schijnbaar is "like" niet geschikt voor gebruik met case.
Nou heb ik zitten denken om bijvoorbeeld zoiets te doen:
Maar ook dit schijnt niet te mogen van MSSQL., invalid syntax near if.
Kan wat ik wil? Vast wel, maar ik kom er niet uit en het nesten van de if...else in het select statement gaat me dus gewoon niet lukken.
Kan iemand me een duw de goeie kant op geven?
Wat doe ik:
Ik bouw een .aspx pagina op onze intranet site welke in een tabel op onze SQL server een reeks klanten opzoekt op basis van één van drie velden: klantnummer, postcode en serienummer. De gegevens van deze klanten komen uit drie tabellen en heb ik met een aparte stored procedure uit die verschillende tabellen gehaald en in een door mij voor mij gemaakt tabelletje "weekendklanten" geparkeerd. Hier gaat het nog steeds goed, maar ik wil meer dan de gegevens 1 op 1 overnemen.
De laatste twee velden in de betreffende tabel wul ik met Dekkingstype en Provider. Uit 2 van de 3 klanttabellen komen de dekkingstypes in plain-text en hoeven dus niet bewerkt te worden, de providers komen echter als nummertje tevoorschijn en moeten met een Case statement vervangen worden door lappies tekst.
Die Case ziet er ongeveer zo uit:
code:
1
2
3
4
5
6
| Case klproviderid when 2 then 'Interne klant' when 3 then 'Groenstra' when 4 then 'Veenema Groep' when 5 then 'Autobedrijf Vroem' when 6 then 'Belwinkel' |
enzovoorts. Dit gaat prima, want klproviderid is een numeriek veld.
De derde tabel bevat geen provider code, hier zet ik dus altijd hard de tekst met de provider naam in. Echter, het dekkingstype hier bestaat uit een tekstveld met merdere codes, van vierletters en één of geen cijfers eraanvast. Bevat deze tekst de code "GEGA" dan moet de tekst in de kolom "Gegarandeerd" worden, en anders "Best Effort"
De case zou er dan zo uitzien:
code:
1
2
3
4
5
6
| ( case TK_Dekking when like '%GEGA%' then 'Gegarandeerd' else 'Best Effort' end ) |
Maar dit gaat dus niet: invalid syntax near like. Schijnbaar is "like" niet geschikt voor gebruik met case.
Nou heb ik zitten denken om bijvoorbeeld zoiets te doen:
code:
1
2
3
4
5
6
7
8
| ( if TK_Dekking like '%GEGA%' @variabele = 1 else @variabele = 0 case @variabele when 1 then 'Gegarandeerd' else 'Best Effort' end ) |
Maar ook dit schijnt niet te mogen van MSSQL., invalid syntax near if.
Kan wat ik wil? Vast wel, maar ik kom er niet uit en het nesten van de if...else in het select statement gaat me dus gewoon niet lukken.
Kan iemand me een duw de goeie kant op geven?