Archief - SAS Case When 'Confused'

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

AliChemicali

Legacy Member
Hallo!

Ik ben een beetje in de war, de online SAS tutorial zegt dat een correcte case when de volgende is :

Code:
case when CLASS.Age  <= 12 then 'Pre-Teen'
     when (CLASS.Age  >= 13) and  (CLASS.Age  <= 20) then 'Teen'
     else 'Other'
end

Maar dat kan toch niet, geweet toch zo niet waar de value 'Pre-teen' moet inkomen?

Gevonden op: 32160 - How to Apply IF-THEN-ELSE Logic by Using SAS® Enterprise Guide

Dus is de correcte manier niet gewoon zo:

Code:
case when CLASS.Age  <= 12 then CLASS.Person = 'Pre-Teen'
end


Nog iets absurter staat te lezen in het handboek van de leerkracht:

Code:
WHEN WEEKENDDAG = 'Y' then 'Y'
WHEN WEEKENDDAG = 'N' THEN VAKANTIEDAG 
END


Kan iemand hier aub wat duidelijkheid in scheppen.

Mvg,
Vincent

Parnakra

Legacy Member
Je geeft die uitdrukking mee met de nieuwe kolom die je aanmaakt, dus alle resultaten zullen in die kolom geplaatst worden.

Wordt toch duidelijk gemaakt in die tutorial?

AliChemicali

Legacy Member
Parnakra zei:
Je geeft die uitdrukking mee met de nieuwe kolom die je aanmaakt, dus alle resultaten zullen in die kolom geplaatst worden.

Wordt toch duidelijk gemaakt in die tutorial?

Wat ik moet zien te weten is als bv weekenddag = Y is dan moet vakantiedag ook Y worden dus dan is de 2de oplossing die hierboven sta correct of niet ?

Parnakra

Legacy Member
Wat is weekdag, wat is vakantiedag? Je gaat meer info moeten geven voor we kunnen antwoorden op je vraag.

AliChemicali

Legacy Member
Parnakra zei:
Wat is weekdag, wat is vakantiedag? Je gaat meer info moeten geven voor we kunnen antwoorden op je vraag.

Da zijn gewoon column names.

Zoals hier getoond, zijn weekends niet beschouwd als vakantiedagen. De eindgebruikers vragen om dit toch te voorzien als vakantiedag = 'Y'.
97113296.png


Dus ik moet nen case when hebben die daarop gebasseerd is

Cycloon

Legacy Member
Dit is gewone SQL syntax hoor. Als je if en else begrijpt in een gewone programmeertaal dan is dit gewoon hetzelfde.

AliChemicali

Legacy Member
Cycloon zei:
Dit is gewone SQL syntax hoor. Als je if en else begrijpt in een gewone programmeertaal dan is dit gewoon hetzelfde.

Maar welk is dan de juiste manier van de 3 hierboven?

Cycloon

Legacy Member
Als het over je vakantiedagen gaat is deze correct hoor:

Code:
CASE WHEN WEEKENDDAG = 'Y' then 'Y'
WHEN WEEKENDDAG = 'N' THEN VAKANTIEDAG 
END

Al zou ik het zelf zo schrijven:

Code:
CASE WHEN WEEKENDDAG = 'N' THEN VAKANTIEDAG
ELSE WEEKENDDAG
END

Maar het is mij ook niet écht duidelijk wat je vraagt hoor :)

AliChemicali

Legacy Member
Cycloon zei:
Als het over je vakantiedagen gaat is deze correct hoor:

Code:
CASE WHEN WEEKENDDAG = 'Y' then 'Y'
WHEN WEEKENDDAG = 'N' THEN VAKANTIEDAG 
END

Al zou ik het zelf zo schrijven:

Code:
CASE WHEN WEEKENDDAG = 'N' THEN VAKANTIEDAG
ELSE WEEKENDDAG
END

Maar het is mij ook niet écht duidelijk wat je vraagt hoor :)

Maar uw manier kan toch nooit correct zijn want gekent nergens de value Y aan toe :/

Cycloon

Legacy Member
Wat dit gaat doen is Y zetten wanneer weekenddag = Y en de waarde van vakantiedag zetten als weekenddag = N. Die else zorgt ervoor dat alles dat niet gedekt wordt door de "WHEN" statements die waarde krijgt.

AliChemicali

Legacy Member
Cycloon zei:
Wat dit gaat doen is Y zetten wanneer weekenddag = Y en de waarde van vakantiedag zetten als weekenddag = N. Die else zorgt ervoor dat alles dat niet gedekt wordt door de "WHEN" statements die waarde krijgt.

Slimgezien zo had ik het nog niet bezien eigelijk.

Dank u !
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan