Pregunta

Tengo una columna DateTime anulable en mi tabla de SQL Server 2005 llamada DateTimeDeleted.

Me gustaría tener una columna calculada de tipo BIT que sea 1 si DateTimeDeleted no es nulo, de lo contrario 0. Sin embargo, parece que no puedo obtener la sintaxis correcta para la fórmula.

He intentado:

(TsDeleted IS NULL) = 0

pero me da un error de sintaxis.

¡Ayuda! :)

¿Fue útil?

Solución

Alter Table MyTableName 
  Add IsDeleted As 
     (Case When [DateTimeDeleted] Is Null 
       Then (0) Else (1) End)

Esto saldrá como un entero ... Si realmente quieres que sea un poco, entonces:

Alter Table MyTableName 
  Add IsDeleted As 
     cast( (Case When [DateTimeDeleted] Is Null 
       Then (0) Else (1) End) as Bit)

Otros consejos

Creo que esto debería funcionar:

update table
set IsDeleted = case when DateTimeDeleted is null then 0 else 1 end

Esto funcionará, básicamente divide por sí solo si no es nulo y luego divide 0 por 1 si es NULL

CONVERT(INT,IsNULL(DateTimeDeleted,0))/CONVERT(INT,IsNULL(DateTimeDeleted,1))
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top