Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/02/2008, 08:11
Avatar de Andres95
Andres95
Colaborador
 
Fecha de Ingreso: diciembre-2004
Mensajes: 1.802
Antigüedad: 20 años
Puntos: 38
Re: Como Insertar info de una tabla en otra

Otra alternativa...

Como recomendacion, eviten al maximo el uso de cursores, ya que SQL Server no esta diseñado para trabajar registro por registro, sino de forma masiva.

Draken, retome el ejemplo que te habia comentado para generar el select, solo me quedó la duda de que donde se obtiene el valor de descripcion (de que tabla) y lo tipos de datos de las tablas...

Agregar el resto de los dias sera muy facil, solo copiar el ultimo renglon y modificar el valor de dia = 4, = 5, etc....

Código:


create table Farmacias(
       cod_Farmacia  int
      ,Nom_Farmacia  varchar(50)
       )


create table VentasAcumXDia (
       Fecha         datetime    -- Considerando este campo como datetime
      ,NumSucursal   int
      ,CodigoInterno varchar(5)
      ,Piezas        int)        -- Este campo deberia ser numerico



Create table ReportVenDiarias(
       CodigoInterno varchar(5)
      ,Descripcion   varchar(10)
      ,NumSucursal   int
      ,Sucursal      varchar(50)
      ,Dia1          int      -- Estos campos deberian ser numericos
      ,Dia2          int
      ,Dia3          int)

insert into VentasAcumXDia values ('20080201',1,19770,'25')
insert into VentasAcumXDia values ('20080202',1,19770,'20')
insert into Farmacias values (1,'Farmacia 1')



Declare @fecha1 datetime

Set @fecha1 = '20080201'  -- Formato estandar de Fecha (YYYYMMDD)

Insert into ReportVenDiarias (CodigoInterno, Descripcion, NumSucursal, Sucursal, Dia1,Dia2,Dia3  )
Select  v.CodigoInterno 
       ,''              as Descripcion
       , v.NumSucursal   as NumSucursal
       ,f.Nom_Farmacia  as Sucursal
       ,Sum(Case When day(Fecha) = 1 Then Piezas Else 0 End) Dia1
       ,Sum(Case When day(Fecha) = 2 Then Piezas Else 0 End) Dia2
       ,Sum(Case When day(Fecha) = 3 Then Piezas Else 0 End) Dia2
From  Farmacias f
Inner join 
      VentasAcumXDia v
On    f.Cod_Farmacia = v.NumSucursal
Where CodigoInterno = 19770 And 
      v.Fecha >= @fecha1    And          
      v.Fecha <  dateadd(dd, 1, @fecha1) 
Group by
      v.CodigoInterno
     ,v.NumSucursal
     ,f.Nom_Farmacia


select * from VentasAcumXDia
select * from ReportVenDiarias
Saludos!
__________________
La sencillez y naturalidad son el supremo y último fin de la cultura...
--
MCTS : SQL Server 2008, .NET Framework 3.5, ASP.NET Applications.