Principales respuestas
Ayuda con procedimiento almacenado

Pregunta
-
Hola amigos como esta, queria ver si me pueden ayudar con un problema que tengo
Tengo las siguientes TABLAS y campos
SERVICIO,servicioid,Tecnicoid,Fecha....
SERVICIO_DET,id,ServicioId,TipoServicioId,Cantidad....
TECNICO,TecnicoId,Nombre.....
TIPO_SERVICIO,TipoServicioId,Descripcion...,
De estas tablas tengo que hacer un reporte como el siguiente
Rótulos de fila Tecnico1 Tecnico2 Tecnico3 Tecnico4 Tecnico5 Total general % Total Enero 10 66 42 20 58 196 % % 5.10% 33.67% 21.43% 10.20% 29.59% call center 0 4 9 3 3 19 9.69% instalaciones 1 11 1 2 3 18 9.18% mantenimiento 2 21 7 2 23 55 28.06% soporte 3 2 7 7 12 31 15.82% limpieza 0 6 2 4 2 14 7.14% revision 4 22 16 2 15 59 30.10% He llegado a sacar con una consulta lo siguiente
mes tecnicoid Nombre TipoServicioId Descripcion asistencias 1 1 Tecnico1 1 1-800 43 1 1 Tecnico1 2 MANTENIMIENTO 21 1 1 Tecnico1 3 INSTALACION 21 1 1 Tecnico1 4 RENTAS 0 1 1 Tecnico1 5 REPETIDAS 0 1 1 Tecnico1 6 REVISION 0 1 1 Tecnico1 7 FSMA 0 1 1 Tecnico1 8 GARANTIA OFFICE 0 1 1 Tecnico1 9 REPARACIÓN 0 7 1 Tecnico1 1 1-800 0 7 1 Tecnico1 2 MANTENIMIENTO 0 7 1 Tecnico1 3 INSTALACION 0 7 1 Tecnico1 4 RENTAS 0 7 1 Tecnico1 5 REPETIDAS 0 7 1 Tecnico1 6 REVISION 4 7 3 Tecnico2 1 1-800 0 7 3 Tecnico2 2 MANTENIMIENTO 9 7 3 Tecnico2 3 INSTALACION 1 7 3 Tecnico2 4 RENTAS 0 7 3 Tecnico2 5 REPETIDAS 0 7 3 Tecnico2 6 REVISION 9 8 1 Tecnico1 1 1-800 0 8 1 Tecnico1 2 MANTENIMIENTO 0 8 1 Tecnico1 3 INSTALACION 1 8 1 Tecnico1 4 RENTAS 0 8 1 Tecnico1 5 REPETIDAS 0 8 1 Tecnico1 6 REVISION 2 La consulta que uso es
select month(fecha) as mes,a.tecnicoid,d.Nombre,d.tecnico_login,b.TipoServicioId,c.Descripcion,sum(b.Cantidad) from off_servicio a inner join off_servicio_det b on a.ServicioId=b.ServicioId inner join off_tipo_servicio c on b.TipoServicioId=c.TipoServicioId inner join off_tecnico d on a.TecnicoId=d.TecnicoId where Fecha>=@FechaInicio and Fecha<=@FechaFin and a.Eliminado=0 group by MONTH(fecha),a.tecnicoid,d.Nombre,d.tecnico_login,b.TipoServicioId,c.Descripcion order by 1
Entonces con la consulta que realizaba lo exportaban a excel, y con tabla dinamica hacian los reportes en el formato que les indique un poco mas arriba.
Y ahora quieren el reporte que salga directo, y aqui estoy con algunas dudas de como podria hacer este reporte,
Mi consulta es como podria hacer este reporte con una sola consulta?, de pronto usan pivot que he visto algo por ahi y parece que me puede ayudar,
O me toca ir de uno en uno barriendo la conusulta y creando tablas temporales de forma dinamica para poder hacer lo que necesito,
ustedes con su experiencia espero me puedan orientar de como obtener este reporte.
Saludos
Respuestas
-
Hola.
En ese caso, haz tú las modificaciones en el Excel antes de mandarlas, creas una plantilla que tenga la tabla dinámica ya creada y sólo cambias los datos de los que esta se nutre de una vez para otra.
¿Valdría esa opción?
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande- Marcado como respuesta Alberto López Grande (qwalgrande)Moderator lunes, 10 de febrero de 2014 7:53
Todas las respuestas
-
Hola.
¿Qué se entiendo por "quieren que el reporte salga directo"? ¿Has de preparar un informe de Reporting Services que lo haga o cómo es la capa de presentación en este caso?
Si lo debes obtener de una sentencia T-SQL, pivotar sería la opción que más puede aproximarse, según lo expones. Si no lo logras por ti mismo, facilita scritps de creación de tablas y scripts de inserción de datos de ejemplo.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande -
Que tal Alberto gracias por responder, con lo que reporte directo decia que no quieren ellos realizar ninguna operacion en excel para obtener el reporte final sino de una que muestre el sistema.
No tengo instalado reporting services y no creo que podamos usarlo,
La capa de presentacion tengo un form el cual llama a mi capa de datos y esta ejecuta un procedimiento almacenado o una consulta directa dependiendo del caso.
Los scripts de tablas y datos son los siguientes
Espero puedas ayudarme
https://dl.dropboxusercontent.com/u/39103241/SQLQuery4.sql
Saludos
-
Hola, te sugiero utilizar "PowerPivot" en excel, bajate el instalador, fijate si tu excel es de 32 o 64 bits. Crea una conexión a tu basa, y jala los datos con la consulta SQL que comentas. Luego con las tablas dinamicas haz el reporte, si mantienes la conexión el ususario podrá ponerle actualizar y listo, no hará nada mas que ver siempre su reporte, suerte.
Espero te sirva.
Carlos Severino Chuquillanqui Gamarra
-
Hola.
En ese caso, haz tú las modificaciones en el Excel antes de mandarlas, creas una plantilla que tenga la tabla dinámica ya creada y sólo cambias los datos de los que esta se nutre de una vez para otra.
¿Valdría esa opción?
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande- Marcado como respuesta Alberto López Grande (qwalgrande)Moderator lunes, 10 de febrero de 2014 7:53
-
-
Hola.
Lo que yo estaba proponiendo no requiere del usuario nada más que recibir el Excel. De todos modos, hay muchas otras alternativas, no es únicamente esta la opción.
Alberto López Grande
SQL Server MVP
Visita mi blog en http://qwalgrande.com
Sígueme en twitter en http://twitter.com/qwalgrande