Traer el nombre del campo cuando el valor es TRUE

24/10/2008 - 16:46 por C a r l o s A n t o n i o | Informe spam
Saludos Compañeros.

Buen fin de semana a todos.

Tengo que hacer una consulta que, en vez de devolver el valor de campo, me
traiga el nombre del campo. cuando es TRUE. ¿Esto se puede hacer?

Gracias

Carlos Antonio

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
24/10/2008 - 17:27 | Informe spam
C a r l o s A n t o n i o,

Que tipo de data tienen esas columnas, porque en SQL Server no tenemos
boolean.

select
case when c1 = 0 then '0' else 'c1' end as new_c1,
from
t
GO


AMB

"C a r l o s A n t o n i o" wrote:

Saludos Compañeros.

Buen fin de semana a todos.

Tengo que hacer una consulta que, en vez de devolver el valor de campo, me
traiga el nombre del campo. cuando es TRUE. ¿Esto se puede hacer?

Gracias

Carlos Antonio



Respuesta Responder a este mensaje
#2 DiegoRomero
24/10/2008 - 17:47 | Informe spam
On 24 oct, 09:46, "C a r l o s A n t o n i o" <carlvazpr?
arroba¿yahoo.com> wrote:
Saludos Compañeros.

Buen fin de semana a todos.

Tengo que hacer una consulta que, en vez de devolver el valor de campo, me
traiga el nombre del campo. cuando es TRUE.  ¿Esto se puede hacer?

Gracias

Carlos Antonio



Si el campo es de tipo BIT o INT:


SELECT CASE Columna1 WHEN 1 THEN 'Columna1' ELSE Columna1 END AS
AliasColumna FROM Tabla1


Espero le funcione


Diego M Romero
Respuesta Responder a este mensaje
#3 Alejandro Mesa
24/10/2008 - 19:35 | Informe spam
DiegoRomero,

Probastes esa solucion?

El tipo de dato que devuelve la funcion CASE, es el tipo de mayor
precedencia entre los tipos usados en las partes THEN y else de la funcion.
La cadena 'Columna1', que es considerada varchar y cuyo tipo tiene menor
precedencia que bit o int, no puede ser convertida a entero ni a bit, por lo
que te dara error.

Ejemplo:

CREATE TABLE dbo.t (
c1 BIT NOT NULL DEFAULT(0)
)
GO

INSERT INTO dbo.t DEFAULT VALUES
INSERT INTO dbo.t DEFAULT VALUES
INSERT INTO dbo.t DEFAULT VALUES
INSERT INTO dbo.t VALUES(1)
GO

SELECT CASE WHEN c1 = 0 THEN c1 ELSE 'columna1' END AS new_c1
FROM dbo.[t]
GO

DROP TABLE dbo.t
GO

Resultado:

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the varchar value 'columna1' to data type
bit.

Convierte el valor a cadena.

SELECT CASE WHEN c1 = 0 THEN '0' ELSE 'columna1' END AS new_c1
FROM dbo.[t]
GO


AMB



"DiegoRomero" wrote:

On 24 oct, 09:46, "C a r l o s A n t o n i o" <carlvazpr?
arroba¿yahoo.com> wrote:
> Saludos Compañeros.
>
> Buen fin de semana a todos.
>
> Tengo que hacer una consulta que, en vez de devolver el valor de campo, me
> traiga el nombre del campo. cuando es TRUE. ¿Esto se puede hacer?
>
> Gracias
>
> Carlos Antonio

Si el campo es de tipo BIT o INT:


SELECT CASE Columna1 WHEN 1 THEN 'Columna1' ELSE Columna1 END AS
AliasColumna FROM Tabla1


Espero le funcione


Diego M Romero



Respuesta Responder a este mensaje
#4 DiegoRomero
22/11/2008 - 02:39 | Informe spam
Disculpas

No la probe, y tiene razon genera error.

Lo tendre en cuenta para la próxima




On 24 oct, 12:35, Alejandro Mesa
wrote:
DiegoRomero,

Probastes esa solucion?

El tipo de dato que devuelve la funcion CASE, es el tipo de mayor
precedencia entre los tipos usados en las partes THEN y else de la funcion.
La cadena 'Columna1', que es considerada varchar y cuyo tipo tiene menor
precedencia que bit o int, no puede ser convertida a entero ni a bit, por lo
que te dara error.

Ejemplo:

CREATE TABLE dbo.t (
c1 BIT NOT NULL DEFAULT(0)
)
GO

INSERT INTO dbo.t DEFAULT VALUES
INSERT INTO dbo.t DEFAULT VALUES
INSERT INTO dbo.t DEFAULT VALUES
INSERT INTO dbo.t VALUES(1)
GO

SELECT CASE WHEN c1 = 0 THEN c1 ELSE 'columna1' END AS new_c1
FROM dbo.[t]
GO

DROP TABLE dbo.t
GO

Resultado:

Msg 245, Level 16, State 1, Line 2
Conversion failed when converting the varchar value 'columna1' to data type
bit.

Convierte el valor a cadena.

SELECT CASE WHEN c1 = 0 THEN '0' ELSE 'columna1' END AS new_c1
FROM dbo.[t]
GO

AMB



"DiegoRomero" wrote:
> On 24 oct, 09:46, "C a r l o s  A n t o n i o" <carlvazpr?
> arroba¿yahoo.com> wrote:
> > Saludos Compañeros.

> > Buen fin de semana a todos.

> > Tengo que hacer una consulta que, en vez de devolver el valor de campo, me
> > traiga el nombre del campo. cuando es TRUE.  ¿Esto se puede hacer?

> > Gracias

> > Carlos Antonio

> Si el campo es de tipo BIT o INT:

> SELECT CASE Columna1 WHEN 1 THEN 'Columna1' ELSE Columna1 END AS
> AliasColumna  FROM Tabla1


> Espero le funcione

> Diego M Romero- Ocultar texto de la cita -

- Mostrar texto de la cita -
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida