• Lunes 18 de Noviembre de 2024, 04:26

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - DrakenRG

Páginas: [1]
1
SQL Server / Problema Con Proceso Pivot
« en: Miércoles 13 de Febrero de 2008, 19:02 »
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:

2
SQL Server / Problema Con El Paso De Info De Una Tabla A Otra
« en: Jueves 7 de Febrero de 2008, 23:46 »
A continuacion les pongo el codigo de una consulta la cual primero pretendo que despliegue el paso de una informacion de una tabla a otra, antes del codigo les pongo tambien la informacion sobre las tablas las cuales estoy trabajando.

----- 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) ------------------- EL nombre de estos campos que corresponden al dia es asi, el numero a secas.
...... ------------
31------->Money(8) ------------

Acontinuacion les pongo el 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

Halle algo muy curioso que tiene que ver con la siguiente linea del codigo anterior.

v.Fecha < dateadd(dd,1,@fecha1) <----- En este caso la consulta no despliega nada

Pero

v.Fecha < dateadd(dd,2,@fecha1)
v.Fecha < dateadd(dd,3,@fecha1)
v.Fecha < dateadd(dd,5,@fecha1)

En estos casos la consulta despliega el mismo resultado que es:

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

los datos insertados en la columna 2 son correctos, pero solo inserta el numero de piezas de ese dia.

no importa si modifico esa linea de esta manera
v.Fecha < dateadd(dd,3,@fecha1) o v.Fecha < dateadd(dd,4,@fecha1) o etc
muestra lo mismo solamente inserta los datos que son los correctos para el dia 2 , pero los demas dias los pone en 0, siendo que si hay piezas vendidas ese dia.

2008/02/01 --- 1---- 19770-------13
2008/02/01 ----2-----19770--------7
2008/02/01 ----3-----19770--------1
2008/02/02 --- 1---- 19770-------22
2008/02/02 ----2-----19770--------5
2008/02/02 ----3-----19770--------1
2008/02/03 --- 1---- 19770-------16
2008/02/03 ----2-----19770--------3
2008/02/03 ----3-----19770--------1

La info de arriba , es la info que se encuentra en la tabla VentasAcumXDia, viendola podemos notar que el codigo en el caso del dia 2 si hace lo correcto puesto las cantidades son las que se vendieron ese dia, el detalle es que no importa que dia ponga en la linea escrita arribita solo inserta lo del dia 2 y no hace nada con los otros dias.


Espero contar con su ayuda para ver que es lo que esta pasando con este detalle, de nueva cuenta gracias por su tiempo.
Saludos

Páginas: [1]