SQL Server - Obteniendo filas como columnas con SQL 2014

 
Vista:
sin imagen de perfil

Obteniendo filas como columnas con SQL 2014

Publicado por maria edith (2 intervenciones) el 17/05/2016 01:11:41
Hola a Todos.
Tengo una duda con respecto a la función PIVOT les agradecería cualquier ayuda.
Ya tengo un SP que me regresa los datos del cruce de dos tablas (una guarda datos que son campos tipo bit y otra es el catalogo) bueno el chiste es que el valor que al final queda en las columnas es el campo bit pero no he podido hacer que la función regrese el dato como bit o lógico sino que lo tuve que modificar a numérico para poderlo ejecutar, Alguien conoce una forma en la que al final pueda obtener esos datos como lógicos???

Este es mi código para hacerme entender mejor.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
declare @attr varchar(max)
declare @sql varchar(max)
set @attr=''
set @sql='select Proyecto, #attr#
from
( Select T0.IDProyecto as Proyecto,( Case when T0.Cumplido =1 then 1 else 0 end ) as Cumplido
 ,Replace(SubString(T1.Criterio,1,100),'' '','''') as Criterio
 From Tarea1 T0 inner join CatTareas T1 on (T0.IDCriterio=T1.ID) 
) as source pivot(
    max(Cumplido)
    for Criterio in (#attr#)
) as pvt
'
select @attr=@attr+'['+V.Criterio+'],'from (
    select distinct Replace(SubString(Criterio,1,100),' ','') as Criterio from dbo.CatTareas where Tarea=1
) as V
set @attr=SUBSTRING(@attr,0,len(@attr))
set @sql=REPLACE(@sql,'#attr#',@attr)
print @sql
exec(@sql)


Proyecto CartadeAsignacion JuegodePlanos MemoriaDescriptiva OrdendeCompra OrdendeServicioLD Pedido45oCartadeAutorizacion Pedido468889 Permisosencasoderequerirse PorcentajedePostesLiberadosdelaElectrica ProgramadeTrabajoActualizado
COL09OLP-PTGHJ-01 1 1 1 1 1 1 1 1 1 1
ELPULTOM-002-OLO987 0 1 1 1 0 1 1 0 1 1
PILTRADLO00192-987 1 1 1 1 1 1 1 1 1 1

Al ejecutarlo funciona solo que los valores son cero y uno en lugar de falso o verdadero, que es lo que necesito para continuar con otras cosas. o sabran si de plano no se puede hacer con la función PIVOT?

Saludos y gracias por la atención .... :-)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Obteniendo filas como columnas con SQL 2014

Publicado por Isaias (4558 intervenciones) el 17/05/2016 17:09:17
Modifica esta linea:

( Case when T0.Cumplido =1 then 'Verdadero' else 'Falso' end )
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Obteniendo filas como columnas con SQL 2014

Publicado por Edith (2 intervenciones) el 17/05/2016 17:38:05
Gracias Isaias .. pero si hago el valor que regresa no es un ligical o bit sino una cadena con la leyenda True o False o en su caso un error como este
Select T0.IDProyecto as Proyecto,( Case when T0.Cumplido =1 then True else False end ) as Cumplido
.
.
.
Msg 207, Level 16, State 1, Line 4
Invalid column name 'True'.
Msg 207, Level 16, State 1, Line 4
Invalid column name 'False'.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 31
Ha disminuido su posición en 3 puestos en SQL Server (en relación al último mes)
Gráfica de SQL Server

Obteniendo filas como columnas con SQL 2014

Publicado por salvador (29 intervenciones) el 18/05/2016 08:50:33
Hola Edith,

En SQL Server no existe "True o False", solo existen 0, 1 y -1 como valores lógicos.

A la hora de mostrar el resultado en un Grid, sólo tienes que interpretar los datos que te ha devuelto y poner otros.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Obteniendo filas como columnas con SQL 2014

Publicado por isaias (4558 intervenciones) el 18/05/2016 19:35:16
Select T0.IDProyecto as Proyecto,( Case when T0.Cumplido =1 then 'True' else 'False' end ) as Cumplido
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar