SQL Server - Update de un inner join

 
Vista:
sin imagen de perfil

Update de un inner join

Publicado por CarlosQ (52 intervenciones) el 29/10/2012 06:04:26
Buenos días estimados profesores, me pueden ayudar por favor, no se como manejar el campo fecha como condición de un where. Donde campo fecha debo agregarlo en la sub consulta, para después utilizarlos en el where. El problema que si agrego fecha en la sub consulta no esta sumando por campo cod, se pierde la sumatoria de minutos por cod.

update h
set h.trafico = t.minutos
from Despachados h
inner join
(select distinct cod,fecha,round(sum(dur_call)/60,0) as minutos from dbo.Trafico group by cod,fecha) t
on h.cod= t.cod
where t.fecha >= cast(right(right(h.fecha_desp_o,4),2)+''+left(right(h.fecha_desp_o,7),2)+''+left(h.fecha_desp_o,2) as char)
and h.despachados= 0

Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Update de un inner join

Publicado por Isaias (4558 intervenciones) el 29/10/2012 17:38:24
¿Para que hacer el cast?

cast(right(right(h.fecha_desp_o,4),2)+''+left(right(h.fecha_desp_o,7),2)+''+left(h.fecha_desp_o,2
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Update de un inner join

Publicado por CarlosQ (52 intervenciones) el 29/10/2012 21:01:03
Hola Isaias,
buena observación le daré una vuelta, lo voy a probar sin el cast.

Respecto a mi problema de que forma se te ocurre se podría lograr es justo el campo fecha el que me da el problema pero a la vez es el campo requerido para que funcione el where.

saludos,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Update de un inner join

Publicado por CarlosQ (52 intervenciones) el 05/11/2012 19:13:55
Gracias por su ayuda, pero mi problema se enfoca mas a como obtener o utilizar las fechas de ambas tablas para poder realizar la acción del were.

ya que si agrego la fecha en la subconsulta estoy restringiendo el el total del operador SUM por cada COD, pero si no agrego el campo fecha en la subconsulta, despues en el where no puedo utilizarla como parametro ya que no estará en el select de la subconsulta. Espero haberme explicado.

modifique un poco la query

update Despachos
set trafico=t1.minutos
from
(
select d.cod,t.fecha,round(sum(t.dur_call)/60,0) as minutos
from Despachos d inner join Trafico t on d.cod= t.cod
group by d.cod,t.cod
) as t1
where Despachos.cod= t1.cod
and t1.fecha >= right(right(fecha_desp_o,4),2)+''+left(right(fecha _desp_o,7),2)+''+left(fecha_desp_o,2)
and despachados= 0


Finalmente no me entrega el total de minutos para cada COD según la fecha, ya que al agregar la fecha en el select de la subconsulta y utilizar el operador SUM, estos valores de minutos quedan separados segun lo correspondiente a cada fecha. Pero si no agrego la fecha en la subconsulta despues no puedo utilizarlo en el Where general como condición.

El tema es que dependiendo de la fecha de la tabla 1 (Despachos) sirva como condición para realizar sumatoria de minutos para cada Cod de la tabla 2 (Trafico) donde existe tráfico de minutos por día.

Entonces si la fecha de tabla 1 para un Cod X es el 01-11-2012 entonces debería actualizar el campo trafico de tabla 1 con la sumatoría de trafico de la tabla 2 desde el 01-11-2012 en adelante.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar