Buenos dias, tardes o noches tengan todos los presentes. A continuacion les explicare la problematica.
Cuento con 2 tablas
La primera es la de VentasAcumXDia la cual yo actualizo dia con dia , esta si contiene informacion , informacion que va desde el 1ero de Febrero hasta el 12 de Febrero del presente año 2008.
La segunda es la de ReportVentasDiarias , esta tabla es la que quiero se llene por medio de la tabla de VentasAcumXDia y de otras dos tablas.
A continuacion les proporciono informacion de las tablas mencionadas:ç
----- VentasAcumXDia--------
Fecha ------> Datetime(8)
NumSucursal ------> Tinyint(1)
CodigoInterno -----> int(4)
Piezas---------> Money(8)
----- ReportVenDiarias---------
CodigoInterno-----> int(4)
Descripcion--------> varchar(100)
NumSucursal--------> Tinyint(1)
Sucursal-------->varchar(60)
1---------->Money(8) ---------
2--------->Money(8) -------------
3--------->Money(8) ------------------- Estos campos se nombran asi y corresponden al dia del mes.
...... ------------
31------->Money(8) ------------
Lo que quiero que haga el codigo es algo asi:
Si en la tabla de VentasAcumXDia tengo lo siguiente:
Fecha ------------ ----- NumSucursal ------- CodigoInterno ------- Piezas
2008-01-02 00:00:00.000 --- -- 1 --------------- 19770 ---------- 13.000
2008-01-02 00:00:00.000 - -- -- 2 ---- ----------- 19770 ---- ------ 7.000
2008-01-02 00:00:00.000 --- -- 3 ---- ----------- 19770 ---------- 1.000
2008-01-02 00:00:00.000 --- -- 4 ---- ----------- 19770 ---- ------ 2.000
2008-02-02 00:00:00.000 --- -- 1 ---- ---- ------- 19770 ---- ------ 22.000
2008-02-02 00:00:00.000 --- -- 2 ---- ---- ------- 19770 ---- ------ 5.000
2008-02-02 00:00:00.000 --- -- 3 ---- ---- ------- 19770 ---- ------ 1.000
2008-03-02 00:00:00.000 --- -- 1 ---- ---- ------- 19770 ---- ------ 16.000
2008-03-02 00:00:00.000 --- -- 2 ---- ---- ------- 19770 ---- ------ 3.000
2008-03-02 00:00:00.000 --- -- 3 ---- ---- ------- 19770 ---- ------ 1.000
..........
..........
..........
..........
2008-11-02 00:00:00.000 --- -- 4 ---- ---- ------- 19770 ---- ------ 2.000
mediante el codigo la consulta muestra algo asi
supongamos que se pide el dia dos de febrero entonces debe desplegar algo como esto:
CodigoInterno!Descripcion!NumSucursal!Sucursal! --- 1 -- ! --- 2 --- ! --- 3 --- !
19770 ------ GalletasO ---- --1 ----- --- Matriz -- .0000 ---22.0000 -- .0000
19770 ------- GalletasO ---- 2 --------- Matriz -- -.0000 -- 5.0000 --- .0000
19770 ----- --GalletasO ---- 3 ----- ---- Matriz -- .0000 -- 1.0000 ----.0000
se muestre la cantidad de piezas vendidas en la columna que corresponda al dia.
Para eso efectue el siguiente codigo :
declare @fecha1 datetime
set @fecha1 = '20080201' ------------ yyyymmdd
Select v.CodigoInterno as CodigoInterno
,c.Descripcion as Descripcion
,v.NumSucursal as NumSucursal
,f.Nom_Farma as Sucursal
,SUM(case when day(Fecha) = 1 then Piezas Else 0 End)[1]
,SUM(case when day(Fecha) = 2 then Piezas Else 0 End)[2]
,SUM(case when day(Fecha) = 3 then Piezas Else 0 End)[3]
From Farmacias f
Inner Join
VentasAcumXDia v
On f.Cod_Farmacia = v.NumSucursal
Inner Join
CatProductos c
On v.CodigoInterno = c.Codigo
where CodigoInterno = 19770 and
v.Fecha >= @fecha1 and
v.Fecha < dateadd(dd,1,@fecha1)
GROUP BY
v.CodigoInterno
,c.Descripcion
,v.NumSucursal
,f.Nom_Farnmacia
EL cual despliega la informacion , pero el detalle es que no importa que dia uno ponga , la info la despliega en la columna 2 , donde solo deberia desplegar la info en caso de ser 2 de febrero.
Espero explicarme bien si alguien sabe bien de SQL , le agradeceria me hiciera saber que error estoy cometiendo. por su tiempo y molestias muchas gracias.
Saludos