2011-03-27 20 views
6

Por ejemplo, quiero seguir el número 2 como objetivoComprobar si el valor en la columna para todas las filas es exactamente el valor

Esto debería devolver indicación positiva:

ID  Status 
123  2 
432  2 
531  2 
123  2 

Esto debería devolver indicación negativa:

ID  Status 
123  1 
432  3 
531  2 
123  2 

Esto debería devolver indicación negativa:

ID  Status 
123  1 
432  1 
531  1 
123  1 

Gracias

+0

¿Desea saber si todos los valores son iguales o si son exactamente 2 (por ejemplo)? – BlueMonkMN

+0

son todos exactamente 2 – gilhanan

+0

¿Cuál es el tipo de datos de la columna de estado? ¿Y cuál es la base de datos? –

Respuesta

11

EXISTS se deben utilizar con preferencia a COUNT por lo que puede volver tan pronto como se encuentra la primera fila no coincidente.

SELECT CASE 
     WHEN NOT EXISTS(SELECT * 
         FROM your_table 
         WHERE status <> 2) THEN 'Y' 
     ELSE 'N' 
     END AS your_result 

No declaras RDBMS. Es posible que deba agregar FROM DUAL al final de lo anterior, dependiendo del sabor.

+0

¡Muy bonito, funciona como un sueño! – ginalster

2
  select (select count(distinct status) from T) = 1 

volverá 1 o 0 (es decir, verdadera o falsa) dependiendo de si todas las filas tienen el mismo valor en estado o no. Si tiene que tratar con valores NULL en estado:

  select exists 
      (select status from T where status <> 2 or status is null) 
      as StatusContainsOtherThanTwoOrNullValue 
Cuestiones relacionadas