FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Los SP y yo ....
Hola a todos/as de nuevo :
De nuevo con una duda sobre los Stored Procedure .... En SQL 7 y con D5 tengo una tabla cabecera que se llama PARTES y otra de detalle que se llama PARTESLIN. Corresponden a los partes horarios de los trabajadores (entrada, salida, horas trabajadas, produccion, etc....). Ahora necesito generar un informe en el que muestre los datos agrupados por trabajador y fecha (referencia cruzada) similar a una hoja de cálculo de excel, se me ocurrio generarlo todo en un SP con este código : Código:
use GESTPROD GO drop table TEMPORAL drop procedure SP_PARTESINFORMES go create table TEMPORAL ( TRBJDOR char(60), NMROORDEN char(15), FECHA datetime, HT float, CNTCTOS float, CH float, VENTAS float) GO create procedure SP_PARTESINFORMES (@ORDENTEMP char(15), @FECHAD Datetime, @FECHAH Datetime) as begin insert into TEMPORAL select PARTES.CDGOTOP, PARTES.NMROORDEN, PARTES.FECHA, PARTESLIN.HT, PARTESLIN.CNTCTOS, PARTESLIN.VENTAS, (PARTESLIN.CNTCTOS / PARTESLIN.HT) AS CH from PARTES inner join PARTESLIN on PARTES.CDGO = PARTESLIN.CDGOPARTE where ((PARTES.NMROORDEN = @ORDENTEMP) AND (PARTES.FECHA BETWEEN @FECHAD AND @FECHAH)) end GO SELECT FECHA, SUM(CASE DAY(FECHA) WHEN 01 THEN HT ELSE 0 END) AS D1, SUM(CASE DAY(FECHA) WHEN 02 THEN HT ELSE 0 END) AS D2, SUM(CASE DAY(FECHA) WHEN 03 THEN HT ELSE 0 END) AS D3, SUM(CASE DAY(FECHA) WHEN 04 THEN HT ELSE 0 END) AS D4, SUM(CASE DAY(FECHA) WHEN 05 THEN HT ELSE 0 END) AS D5, SUM(CASE DAY(FECHA) WHEN 06 THEN HT ELSE 0 END) AS D6, SUM(CASE DAY(FECHA) WHEN 07 THEN HT ELSE 0 END) AS D7, SUM(CASE DAY(FECHA) WHEN 08 THEN HT ELSE 0 END) AS D8, SUM(CASE DAY(FECHA) WHEN 09 THEN HT ELSE 0 END) AS D9, SUM(CASE DAY(FECHA) WHEN 10 THEN HT ELSE 0 END) AS D10, SUM(CASE DAY(FECHA) WHEN 11 THEN HT ELSE 0 END) AS D11, SUM(CASE DAY(FECHA) WHEN 12 THEN HT ELSE 0 END) AS D12, SUM(CASE DAY(FECHA) WHEN 13 THEN HT ELSE 0 END) AS D13, SUM(CASE DAY(FECHA) WHEN 14 THEN HT ELSE 0 END) AS D14, SUM(CASE DAY(FECHA) WHEN 15 THEN HT ELSE 0 END) AS D15, SUM(CASE DAY(FECHA) WHEN 16 THEN HT ELSE 0 END) AS D16, SUM(CASE DAY(FECHA) WHEN 17 THEN HT ELSE 0 END) AS D17, SUM(CASE DAY(FECHA) WHEN 18 THEN HT ELSE 0 END) AS D18, SUM(CASE DAY(FECHA) WHEN 19 THEN HT ELSE 0 END) AS D19, SUM(CASE DAY(FECHA) WHEN 20 THEN HT ELSE 0 END) AS D20, SUM(CASE DAY(FECHA) WHEN 21 THEN HT ELSE 0 END) AS D21, SUM(CASE DAY(FECHA) WHEN 22 THEN HT ELSE 0 END) AS D22, SUM(CASE DAY(FECHA) WHEN 23 THEN HT ELSE 0 END) AS D23, SUM(CASE DAY(FECHA) WHEN 24 THEN HT ELSE 0 END) AS D24, SUM(CASE DAY(FECHA) WHEN 25 THEN HT ELSE 0 END) AS D25, SUM(CASE DAY(FECHA) WHEN 26 THEN HT ELSE 0 END) AS D26, SUM(CASE DAY(FECHA) WHEN 27 THEN HT ELSE 0 END) AS D27, SUM(CASE DAY(FECHA) WHEN 28 THEN HT ELSE 0 END) AS D28, SUM(CASE DAY(FECHA) WHEN 29 THEN HT ELSE 0 END) AS D29, SUM(CASE DAY(FECHA) WHEN 30 THEN HT ELSE 0 END) AS D30, SUM(CASE DAY(FECHA) WHEN 31 THEN HT ELSE 0 END) AS D31 FROM TEMPORAL GROUP BY FECHA GO Código:
Error al crear el cursor Tengo la impresión de que me he complicado en exceso la vida y que debe existir alguna forma más simple de hacerlo, por eso pido si alguien puede ayudarme o indicarme como podría hacerlo. Saludos y gracias |
#2
|
||||
|
||||
Wop!
Por lo que dices, parece que el error lo produce al hacer la última select, por eso ves los datos actualizados. De todas maneras, no veo nada raro en ella A parte de eso, veo que estás creando una tabla "normal", eso te puede dat problemas en caso de concurrencia... yo usaría tablas temporales que solamente vea el usuario activo, con el operador @@
__________________
E pur si muove |
#3
|
||||
|
||||
Una pregunta,
ahora no tengo la ayuda a mano y no me acuerdo muy bien, pero los operadores que denotan tablas temporales no son # y ##?? Saludos! |
#4
|
||||
|
||||
Gracias por la respuesta tan rápida marto
Cita:
Cita:
Saludos y gracias. |
#5
|
||||
|
||||
Cita:
Cita:
__________________
E pur si muove |
#6
|
||||
|
||||
Cita:
__________________
E pur si muove |
#7
|
||||
|
||||
He modificado el proceso generando una tabla temporal, pero como puedo acceder a ella para consultar si los datos son correctos ?
No puedo hacer : Código:
select * from #TEMPORAL Saludos y gracias. |
#8
|
||||
|
||||
Hilo movido al foro de SQL Server, por no corresponder con la temática del foro de SQL.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#9
|
||||
|
||||
Cita:
He probado el procedimiento utilizando una tabla "normal" ejecutando los procesos independientemente y funciona perfectamente, pero si los integro todos en el mismo SP no devuelve ningún dato. Es correcto el SP ?? Saludos y gracias |
|
|
|