2010-11-10 6 views
5

Según si un campo en la base de datos es igual a algo, quiero seleccionar el valor de otro campo. Estaba pensando que podría usar CASE THEN pero no puedo obtener el valor de un campo.¿Usar CASE para seleccionar un campo en SQL?

Aquí es lo que he probado hasta ahora:

SELECT LastName, CASE FirstName WHEN 'Ian' THEN JobNo END FROM Employees 

JobNo es el nombre del campo que quiero obtener el valor de.

+0

¿Qué tipo de base de datos ? –

Respuesta

10

que se está perdiendo la declaración de otra persona en su declaración de caso, una vez que está ahí que debería funcionar

así:

SELECT LastName, 
    CASE FirstName WHEN 'Ian' THEN JobNo ELSE -1 END 
FROM Employees 
2

probar esto

SELECT LastName, CASE WHEN FirstName ='Ian' THEN JobNo else null END 
FROM Employees 
1

es necesario definir el ELSE:

SELECT LastName, CASE FirstName WHEN 'Ian' THEN JobNo ELSE FirstName END 
FROM Employees 

He cesación de pagos para devolver el Nombre, si no quiere que basta con sustituir con otra cosa. Solo asegúrese de que los tipos de datos sean equivalentes para evitar posibles problemas (he asumido que JobNo es un código de ref varchar para demostrar la sintaxis).

+0

* tos * tipo desajuste * tos * –

0

Aquí está:

SELECT LastName, 
    JobNo = CASE 
     WHEN FirstName = 'Ian' THEN JobNo END 
FROM Employees 
0

La sql la sintaxis me parece correcta. Lo intenté yo mismo y funciona bien. Puede ser que te estás perdiendo algo más. El siguiente es un ejemplo de salida consigo, alt text

0

Adición de una condición ELSE no le hará daño, pero puede que también necesite un nombre de columna para su nueva columna - de este modo:

SELECT LastName, 
     CASE FirstName 
      WHEN 'Ian' THEN JobNo 
      ELSE 0 
     END IansJobNo 
FROM Employees 
Cuestiones relacionadas