• Lunes 18 de Noviembre de 2024, 00:38

Autor Tema:  Problema Con Proceso Pivot  (Leído 1247 veces)

DrakenRG

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Problema Con Proceso Pivot
« en: Miércoles 13 de Febrero de 2008, 19:02 »
0
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 :hola:

DrakenRG

  • Nuevo Miembro
  • *
  • Mensajes: 5
    • Ver Perfil
Re: Problema Con Proceso Pivot
« Respuesta #1 en: Lunes 18 de Febrero de 2008, 15:10 »
0
Buenos dias , tardes o noches segun sea el caso, me pregunto si alguien que se a tomado la molestia de leer este thread , no cuenta con una idea o el conocimiento para explicar lo antes mencionado, de ser asi, por favor responda , la auda no es obligatoria , pero siempre es buena.
Saludos