
Completar Periodos
Publicado por Estudiante (3 intervenciones) el 02/07/2017 19:19:09
Buen día amigos, verán llevo varios días en esto y ya no se me ocurre nada mas, necesito ayuda con esto:

Lo de la izquierda son los datos que están en la base de datos, la derecha es como debe salir. al hacer una consulta, vista o procedimiento.
el campo suministro esta como int, pfactura esta como int, y fechaejecucion1 esta como date. Lo que necesito es que solo poniendo el periodo(pfactura) inicial y el periodo(pfactura) final, se muestren en la consulta todos estos pfactura por cada suministro(los que ya estan ya no obviamente, solo se agregarian los pfactura q faltarian), en la imagen puse de inicio 201508 y de fin 201603 y en la fechaejecucion normal que aparezca NULL. Hasta ahora solo he podido crear un procedimiento que dandole una fecha inicial y otra final, me extrae año y mes y hago conversiones y me muestra todos los periodos(pfactura), pero no he podido lograr mi cometido de mostrarlo por cada suministro. Espero su ayuda. Muchas gracias. le adjunto el procedimiento que avanze.

Lo de la izquierda son los datos que están en la base de datos, la derecha es como debe salir. al hacer una consulta, vista o procedimiento.
el campo suministro esta como int, pfactura esta como int, y fechaejecucion1 esta como date. Lo que necesito es que solo poniendo el periodo(pfactura) inicial y el periodo(pfactura) final, se muestren en la consulta todos estos pfactura por cada suministro(los que ya estan ya no obviamente, solo se agregarian los pfactura q faltarian), en la imagen puse de inicio 201508 y de fin 201603 y en la fechaejecucion normal que aparezca NULL. Hasta ahora solo he podido crear un procedimiento que dandole una fecha inicial y otra final, me extrae año y mes y hago conversiones y me muestra todos los periodos(pfactura), pero no he podido lograr mi cometido de mostrarlo por cada suministro. Espero su ayuda. Muchas gracias. le adjunto el procedimiento que avanze.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
create PROCEDURE sp_Completar2
@FechaInicio DateTime,
@FechaCierre DateTime
AS
BEGIN
SET NOCOUNT ON;
-- Tabla temporal con las fechas de inicio y cierre
CREATE TABLE #Temp(
Fecha dateTime
)
DECLARE @date DATETIME
SET @date = @FechaInicio
WHILE @date < @FechaCierre + 1
BEGIN
INSERT INTO #Temp
VALUES(@date)
SET @date = dateadd(mm,1, @date)
END
select p.suministro,p.pfactura,cast(convert(varchar(6),t.Fecha,112) as int) as TotalPeriodos,p.fechaejecucion1
from #Temp t
full JOIN dbo.Pfact p
ON t.Fecha = convert(date,convert(char(8),((p.pfactura*100)+1)))
/*ON t.Fecha = p.pfactura */
group by p.suministro,p.pfactura,p.fechaejecucion1,t.Fecha order by p.suministro,t.Fecha
END
exec sp_Completar2 '01/01/2015','01/12/2016'
Valora esta pregunta


0