SQL Server - PIVot

   
Vista:

PIVot

Publicado por sergio sl_tettamanti@hotmail.com (13 intervenciones) el 10/04/2015 19:03:33
tengo problamos con el pivot haber si me pueden dar una idea
tengo la tabla siguiente
id fecha hora codigoagenda usuarios
1 2015-04-05 00:00:00.000 17:50:00.0000000 4 sl_tettamanti
2 2015-04-05 00:00:00.000 17:50:00.0000000 9 sl_tettamanti
3 2015-04-05 00:00:00.000 17:50:00.0000000 5 sl_tettamanti
4 2015-04-08 00:00:00.000 13:00:00.0000000 9 sl_tettamanti
5 2015-04-08 00:00:00.000 13:00:00.0000000 9 sl_tettamanti
6 2015-04-08 00:00:00.000 13:30:00.0000000 5 sl_tettamanti
7 2015-04-08 00:00:00.000 14:30:00.0000000 4 sl_tettamanti
8 2015-04-08 00:00:00.000 15:30:00.0000000 4 sl_tettamanti
9 2015-04-08 00:00:00.000 16:00:00.0000000 9 sl_tettamanti
10 2015-04-08 00:00:00.000 17:30:00.0000000 5 sl_tettamanti
11 2015-04-08 00:00:00.000 18:30:00.0000000 4 sl_tettamanti
12 2015-04-08 00:00:00.000 19:30:00.0000000 4 sl_tettamanti
13 2015-04-09 00:00:00.000 13:00:00.0000000 4 sl_tettamanti
14 2015-04-10 00:00:00.000 14:00:00.0000000 4 sl_tettamanti
15 2015-04-10 00:00:00.000 15:00:00.0000000 4 sl_tettamanti
16 2015-04-10 00:00:00.000 16:00:00.0000000 4 sl_tettamanti
17 2015-04-10 00:00:00.000 17:00:00.0000000 4 sl_tettamanti
18 2015-04-10 00:00:00.000 18:00:00.0000000 4 sl_tettamanti
19 2015-04-10 00:00:00.000 19:00:00.0000000 4 sl_tettamanti
20 2015-04-10 00:00:00.000 20:00:00.0000000 4 sl_tettamanti
21 2015-04-10 00:00:00.000 13:00:00.0000000 4 sl_tettamanti
22 2015-04-11 00:00:00.000 14:00:00.0000000 4 sl_tettamanti
23 2015-04-11 00:00:00.000 15:00:00.0000000 4 sl_tettamanti
24 2015-04-11 00:00:00.000 16:00:00.0000000 4 sl_tettamanti

lo que quiero es columnas agrupadas por fecha y codigo agenda en las filas que corresponda por cada fecha
el select que tengo es el siguiente
el campo nombre sale de la relacion de mmiagenda con turnos, lo que quiero es que aparezca el nombre en la fila y columnas que corresponda
SELECT
COALESCE(fecha,'') as fecha
FROM
(
SELECT
b.hora '<hora>',
V.nombre '<nombre>'
FROM
miagenda V
left JOIN turnos b ON b.codigoagenda=V.codigo
) turnos
pivot (turnos.fecha for miagenda.nombre in fecha) as pivotable
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

PIVot

Publicado por Isaias (3181 intervenciones) el 10/04/2015 21:10:35
¿Qué salida deseas obtener?, danos un ejemplo
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

PIVot

Publicado por sergio (13 intervenciones) el 10/04/2015 21:15:21
fecha1 ,fecha2 ,fecha3 ,fecha4
hora1Nombre1
hora2nombre1nombre3,nombre3
hora3
hora4
.........
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

PIVot

Publicado por Isaias (3181 intervenciones) el 10/04/2015 22:29:50
No se comprende tu formato......
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

PIVot

Publicado por sergio (13 intervenciones) el 10/04/2015 23:04:29
fecha1 fecha2 fecha3 fecha4 etc etc

hora1 Nombre1 etc etc
hora2 Nombre2
hora3 Nombre3
hora4
.....

Porf cada columa de fecha y fila que tendria una hora cargada, quiero poner el codigoagenda que corresponde
En la tabla tengo varios registros con la misma fecha y un codigoagenda asignado, que puede ser el mismo para un codigoagenda como veraz en la tabla que envie
Espero que se entienda
gracias
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

PIVot

Publicado por sergio (13 intervenciones) el 11/04/2015 17:29:42
este es el select que estoy armando
declare @columnas varchar(max)

set @columnas = ''

select @columnas = coalesce(@columnas + CONVERT(VARCHAR(24),fecha,121) + ',', '')
FROM (select distinct fecha from turnos) as DTM

set @columnas = left(@columnas,LEN(@columnas)-1)
print @columnas
DECLARE @SQLString nvarchar(500);

set @SQLString = N'
SELECT hora
FROM
turnos left join miagenda on turnos.codigoagenda=miagenda.codigo PIVOT(nombre FOR fecha IN '+@columnas+') AS PivotTable'

EXECUTE sp_executesql @SQLString
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