# T-SQL, Verwendung mehrerer CASE



## Perlmann (4. Februar 2008)

Hellau zusammen  ;-)

 Bei der Verwendung von mehreren Case-Anweisungen innerhalb einer T-SQL-stored-Procedure scheint syntaktisch etwas nicht zu stimmen, was blos?:

```
SELECT		RNr, WNr, 
		case 			
		when charindex(',',Temp)  > 0  then
  			convert(int,left(Temp,convert(int,charindex(',',Temp))-1))
		end AS Expr1,
		case
 			when charindex(',',Temp)  > 0
  			then  convert(int,substring(Temp,convert(int,charindex(',',Temp))+1,6)
		end as Expr2
FROM         dbo.qry_Irgendeine
```

Die Case-Anweisungen funktionieren einzeln, aber nicht "in Reihe".
Angemerkt wird ein Fehler "in der Nähe" des ersten END.
Ein Komma befindetn sich dort aber, fehlt da sonst noch irgendwas?


Besten Dank
Phil


----------



## raiguen (6. Februar 2008)

Perlmann hat gesagt.:


> ...
> Angemerkt wird ein Fehler "in der Nähe" des ersten END.


Nein, bei mir wird auf die Zeile 9 - also dem letzten 'end' verwiesen
Der Fehler ist auch KLAR:


```
...then  convert(int,substring(Temp,convert(int,charindex(',',Temp))+1,6))
end 
...
```
Erkannt? EINE abschliessende Klammer ) fehlte ...kleine Wirkung grosse Ursache 

Andere Schreibweise:

```
SELECT		RNr, WNr, Expr1=
		case 			
		when charindex(',',Temp)  > 0  then
  			convert(int,left(Temp,convert(int,charindex(',',Temp))-1))
		end ,
                Expr2 =
		case
 			when charindex(',',Temp)  > 0
  			then  convert(int,substring(Temp,convert(int,charindex(',',Temp))+1,6))
		end 
FROM         dbo.qry_Irgendeine
```


----------



## Perlmann (21. Februar 2008)

Hallo,

 in der Tat, nach ewigem Gucken hat man dann schon Tomaten auf den Augen und erkennt die einfachsten "Dinge" (fehlende Klammern) nicht.

mercie
Phil


----------

