• Miércoles 15 de Mayo de 2024, 05:33

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.


Mensajes - DrakenRG

Páginas: [1]
1
SQL Server / Re: Problema Con Proceso Pivot
« en: Lunes 18 de Febrero de 2008, 15:10 »
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

2
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:

3
SQL Server / Re: Problema Con El Paso De Info De Una Tabla A Otra
« en: Martes 12 de Febrero de 2008, 17:36 »
Muy buenos dias a todo el que lee esto. he estado tratando de encontrar una solucion a este problema, pero hasta ahora solo he podido descubrir lo siguiente.

En el codigo la fecha se maneja de la siguiente forma:
--------------------------------------------------------------------------------
declare @fecha1 datetime
set @fecha1 = '20080201' ------------ yyyymmdd
---------------------------------------------------------------------------------
Sinembargo a la hora de ejecutar el codigo en el analizador de Consultas, me di cuenta que me interpreta la fecha de la siguiente manera:
yyyyddmm

Es decir que 20080102 lo interpreta como el primero de feberero.

Otro dato curioso es que en mi Tabla AcumVentasXDia la fecha tiene el siguiente formato:

mmddyyyy
02/01/2008
----------------------------------------------------------------------------------------------------------------------
A que voy con todo esto, a continuacion se los explicare:

Al utilizar en el codigo el formato yyyyddmm , al ejecutar la consulta se despliegan los datos del dia, pero no importa que dia yo ponga se desplegara la info de ese dia pero siempre en el campo '2' , los demas dias siempre quedan en 0s.

No se que ocurra en los case, porque no esta tomando en cuenta el 1 ,3....... 31 y solo este desplegando la info en el campo '2'.

Aqui les mostrare un ejemplo de lo que me refiero:

Cuando utilizo 20080102 <---- formato yyyyddmm

CodigoInterno!Descripcion!NumSucursal!Sucursal! --- 1 -- ! --- 2 --- ! --- 3 --- !
19770 ----- GalletasO ---- 1 ----- --- Matriz -- .0000 --13.0000 -- .0000
19770 ------ GalletasO ---- 2 -------- Matriz -- .0000 -- 7.0000 -- .0000
19770 ----- GalletasO ---- 3 ---- ---- Matriz -- .0000 -- 1.0000 --.0000

Estos datos son los correctos pero deberian ir en el dia 1

cuando utilizo 20080202 <------------YYYYDDMM

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

Esta info es la correcta para el dia 2 y si la despliega ahi en el campo 2, pero porque todo lo despliega en ese campo.

Si utilizo 2008/03/02 <-----------YYYYDDMM

CodigoInterno!Descripcion!NumSucursal!Sucursal! --- 1 -- ! --- 2 --- ! --- 3 --- !
19770 ----- GalletasO ---- 1 ----- --- Matriz -- .0000 --16.0000 -- .0000
19770 ------ GalletasO ---- 2 -------- Matriz -- .0000 -- 3.0000 -- .0000
19770 ----- GalletasO ---- 3 ---- ---- Matriz -- .0000 -- 1.0000 --.0000

La informacion correcta del dia 3 pero la despliega en el campo 2.

Es por eso que digo no importa que dia sea, no se que pasa en los case que omite todos los demas y solamente pasa la info al campo '2' .

Por si se preguntan que pasa si utilizo el formato YYYYMMDD , la respuesta es , no muestra la informacion , solo regresa el nombre de los campos.

Espero explicarme bien, en verdad que me gustaria saber mas de SQL y no molestarles, recurro a ustedes porque obviamente saben mucho mas que yo y porque tambien a lo mejor varias personas pueden tener problemas similares.
Espero puedan ayudarme en verdad les agradeceria mucho, gracias por su atencion y disculpas por dar tanta lata
Saludos!!!
:ayuda:

4
SQL Server / Re: Problema Con El Paso De Info De Una Tabla A Otra
« en: Sábado 9 de Febrero de 2008, 18:01 »
Mi duda es , porque solamente inserta los datos en el campo 2 y los demas campos 1,3 me los deja en ceros.
Agradecido de antemano Saludos

5
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]