# Oracle: case ergebnis in Where Klausel



## Communicate (19. August 2009)

Hallo, 
für Profis ist meine Frage bestimmt Kinderleicht, ich scheitere aber leider gerade daran :-(.

Wenn ich im Select teil ein Case habe (z.B. case when datum = to_date('31.03.2009') then 'a' else 'b' end as test)

wie kann ich im Where teil dann auf mein Feld "test" zugreifen?
also so in der Richtung "where test='a' ?

Vielleicht könnt Ihr mir ja helfen 

Grüße
Communicate


----------



## kuddeldaddeldu (19. August 2009)

Hi,



Communicate hat gesagt.:


> wie kann ich im Where teil dann auf mein Feld "test" zugreifen?
> also so in der Richtung "where test='a' ?



ich kenne mich zwar mit Oracle nicht aus, würde aber trotzdem sagen: gar nicht. 

Wenn die Bedingungen in der WHERE-Klausel ausgewertet werden, existiert "test" noch nicht.
Du könntest auf die Bedingung einschränken, die bewirkt, das "a" für "test" geliefert wird:


```
WHERE datum = to_date('31.03.2009')
```

LG


----------



## Bernd1984 (19. August 2009)

Hallo Communicate,

ich kenne mich zwar auch nicht mit Oracle aus, würde aber trotzdem sagen: Evtl..

Kuddeldaddeldu hat natürlich Recht damit, dass 'test' in der WHERE-Bedingung noch nicht existiert.
Auch könntest du das Datum vorher einschränken (s. Post von Kuddeldaddeldu).

Aber du könntest das CASE in der WHERE-Bedingung benutzten:

```
where (case when datum = to_date('31.03.2009') then 'a' else 'b' end = 'a')
```
Ob es bei Oracle funktioniert kann ich dir nicht sagen, aber bei MSSQL geht es so.


----------



## kuddeldaddeldu (19. August 2009)

Hi,



Bernd1984 hat gesagt.:


> Aber du könntest das CASE in der WHERE-Bedingung benutzten:
> 
> ```
> where (case when datum = to_date('31.03.2009') then 'a' else 'b' end = 'a')
> ```



das wäre aber doch nur eine verkomplizierte Form von


```
where datum = to_date('31.03.2009')
```

LG


----------

