Condicianales en sentencia SQL

21/03/2007 - 10:19 por José Luis Capel - Aicom | Informe spam
Hola a todos,

Esta cuestión es, como es habitual en mi, de novato.

Sea la siguiente tabla:

codigo ndia1 ndia2 ndia3
'0021' 0 0 1
'0032' 2 0 0
'0031' 0 3 0
'0082' 1 0 0

donde ndia1, ndia2, y ndia3 son campos tipo int.

En un select me gustaría obtener estos resultados

codigo dia
'0021' '3'
'0032' '1'
'0031' '2'
'0082' '1'

El select sería algo así

SELECT codigo, (IF ndia1 <> 0 then '1' else IF ndia2 <> 0 then '2' else IF
ndia3 <> 0 then '3' else '0' end ) AS dia FROM mitabla

Obviamente esa sintaxis no es correcta :-(

¿Alguien me puede echar una mano?

Saludos y gracias,
José Luis Capel
 

Leer las respuestas

#1 Rubén Vigón
21/03/2007 - 10:45 | Informe spam
Hola José Luis,

Sólo tienes que usar «CASE»; prueba lo siguiente:

SELECT codigo, CASE WHEN ndia1 != 0 THEN 1 ELSE CASE WHEN ndia2 != 0 THEN 2 ELSE CASE WHEN ndia3 != 0 THEN 3 ELSE NULL END END END AS dia FROM TuTabla
_________________________

codigo dia
0021 3
0032 1
0031 2
0082 1

(4 filas afectadas)
_________________________

Un saludo!

Rubén Vigón
Microsoft MVP Visual Basic
http://vigon.mvps.org

Preguntas similares