none
Crear Procedure Sql Server 2008 ? RRS feed

  • Pregunta

  • Estimados tengo que crear un procedimiento o query, necesito actualizar datos de la tabla TrxTstgoBipDetalle los campos que estan en null, buscar por (PATENTE,FECHA) y los tengo que ir a buscar a la tabla ReporteDosDos.

    Tengo que trae 1 solo registro de la tabla ReporteDosDos y acutaizar la tabla TrxTstgoBipDetalle les dejo los script para que vean las tablas 

    CREATE TABLE [TrxTstgoBipDetalle]
    (
    	[TRXTSTGOBIPDETALLE] [bigint] IDENTITY(1,1) NOT NULL PRIMARY KEY,
    	[PATENTE] [varchar](10) NULL,
    	[FECHA] [datetime] NULL,
    	[FECHACORTA] [date] NULL,
    	[FECHAGPS] [datetime] NULL,
    	[CODIGORUTA] [nvarchar](60) NULL,
    	[NOMBRESERVASIG] [nvarchar](60) NULL,
    	[DISTANCIAPC] [float] NULL,
    	[SERVICIO2_2] [nvarchar](60) NULL,
    	[TIPODIA] [nvarchar](15) NULL
    )
    
    INSERT INTO [TrxTstgoBipDetalle](PATENTE,FECHA,FECHACORTA,FECHAGPS,CODIGORUTA,NOMBRESERVASIG,DISTANCIAPC,SERVICIO2_2,TIPODIA)
    VALUES ('CJRB-44','2017-03-08 09:21:37','2017-03-08',NULL,NULL,NULL,NULL,NULL,NULL)
    INSERT INTO [TrxTstgoBipDetalle](PATENTE,FECHA,FECHACORTA,FECHAGPS,CODIGORUTA,NOMBRESERVASIG,DISTANCIAPC,SERVICIO2_2,TIPODIA)
    VALUES ('FLXJ-53','2017-03-07 19:34:40','2017-03-07',NULL,NULL,NULL,NULL,NULL,NULL)
    
    CREATE TABLE [ReporteDosDos](
    	[FechaGps] [datetime] NULL,
    	[PatenteBus] [nvarchar](10) NULL,
    	[CodigoRuta] [nvarchar](30) NULL,
    	[NombreServAsig] [nvarchar](30) NULL,
    	[DistanciaPc] [float] NULL,
    	[Servicio] [nvarchar](40) NULL,
    	[TipoDia] [nvarchar](15) NULL
    )
    
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 09:13:36','CJRB-44','T313 E0 00I','T313e',0,'313e Ida','Laboral')
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 09:18:46','CJRB-44','T313 E0 00I','	T313e',2,'313e Ida','Laboral')
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 09:23:59','CJRB-44','T313 E0 00I','	T313e',4,'313e Ida','Laboral')
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 09:27:36','CJRB-44','T313 E0 00I','	T313e',6,'313e Ida','Laboral')
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 19:24:53','FLXJ-53','T372 00I','T372',14,'I02 Ida','Laboral')
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 19:31:50','FLXJ-53','T372 00I','T372',16,'I02 Ida','Laboral')
    INSERT INTO [ReporteDosDos](FechaGps,PatenteBus,CodigoRuta,NombreServAsig,DistanciaPc,Servicio,TipoDia)
    VALUES ('2017-03-08 19:41:25','FLXJ-53','T372 00I','T372',18,'I02 Ida','Laboral')

    Pd: espero se allá entendido  :D

    Saludos cordiales 


    Ale Zidane

    jueves, 4 de mayo de 2017 20:33

Respuestas

  • Estimados logre resolver la problemática muchas gracias por el consejo joseph.

    De esta forma lo resolvi :

    INSERT INTO @Table3
    SELECT T1.IDTRXTSTGOBIPDETALLE,T1.PATENTE,T1.FECHA,T2.FechaGps,T2.CodigoRuta,T2.NombreServAsig,T2.DistanciaPc,T2.Servicio,T2.TipoDia,T2.Resultado
    FROM TrxTstgoBipDetalle T1 
    OUTER APPLY (SELECT TOP 1 D1.FechaGps, D1.CodigoRuta, D1.NombreServAsig, D1.DistanciaPc, D1.Servicio, D1.TipoDia,
                        CASE 
    					    WHEN DATEDIFF(SECOND, 0, convert(time,D1.FechaGps)) - DATEDIFF(SECOND, 0, convert(time,T1.HORAFECHATRX)) < 0 
    						THEN (DATEDIFF(SECOND, 0, convert(time,D1.FechaGps)) - DATEDIFF(SECOND, 0, convert(time,T1.HORAFECHATRX)))  * -1
    					ELSE DATEDIFF(SECOND, 0, convert(time,D1.FechaGps)) - DATEDIFF(SECOND, 0, convert(time,T1.HORAFECHATRX)) END AS Resultado
                   FROM ReporteDosDos D1
                  WHERE T1.PATENTE = D1.PatenteBus AND D1.FechaGps BETWEEN DATEADD(minute,-2,T1.HORAFECHATRX) AND DATEADD(minute,2,T1.HORAFECHATRX)  
    			 ORDER BY Resultado ASC) T2

    Saludos cordiales 


    Ale Zidane

    • Marcado como respuesta ale zidane lunes, 8 de mayo de 2017 20:26
    lunes, 8 de mayo de 2017 20:25

Todas las respuestas

  • Gracias por responder estimado, mira se me fue decir pero la complejidad que tiene es que necesito actualizar los datos null de la tabla TrxTstgoBipDetalle por la PATENTE Y FECHA en la Tabla ReporteDosDos la fecha y hora que mas se le acerca FechaGps y PatenteBus solo debo obtener una fila y con eso actualizo la tabla 

    Saludos cordiales 


    Ale Zidane

    jueves, 4 de mayo de 2017 21:18
  • Estimados logre resolver la problemática muchas gracias por el consejo joseph.

    De esta forma lo resolvi :

    INSERT INTO @Table3
    SELECT T1.IDTRXTSTGOBIPDETALLE,T1.PATENTE,T1.FECHA,T2.FechaGps,T2.CodigoRuta,T2.NombreServAsig,T2.DistanciaPc,T2.Servicio,T2.TipoDia,T2.Resultado
    FROM TrxTstgoBipDetalle T1 
    OUTER APPLY (SELECT TOP 1 D1.FechaGps, D1.CodigoRuta, D1.NombreServAsig, D1.DistanciaPc, D1.Servicio, D1.TipoDia,
                        CASE 
    					    WHEN DATEDIFF(SECOND, 0, convert(time,D1.FechaGps)) - DATEDIFF(SECOND, 0, convert(time,T1.HORAFECHATRX)) < 0 
    						THEN (DATEDIFF(SECOND, 0, convert(time,D1.FechaGps)) - DATEDIFF(SECOND, 0, convert(time,T1.HORAFECHATRX)))  * -1
    					ELSE DATEDIFF(SECOND, 0, convert(time,D1.FechaGps)) - DATEDIFF(SECOND, 0, convert(time,T1.HORAFECHATRX)) END AS Resultado
                   FROM ReporteDosDos D1
                  WHERE T1.PATENTE = D1.PatenteBus AND D1.FechaGps BETWEEN DATEADD(minute,-2,T1.HORAFECHATRX) AND DATEADD(minute,2,T1.HORAFECHATRX)  
    			 ORDER BY Resultado ASC) T2

    Saludos cordiales 


    Ale Zidane

    • Marcado como respuesta ale zidane lunes, 8 de mayo de 2017 20:26
    lunes, 8 de mayo de 2017 20:25