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
Cuando ejecuto el SP desde mi aplicación (pasándole los parámetros) se produce el siguiente error :
Código:
Error al crear el cursor
pero si compruebo los datos de la tabla "temporal" están actualizados
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
