Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > SQL
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-01-2009
Rom@n Rom@n is offline
Miembro
 
Registrado: oct 2007
Posts: 25
Poder: 0
Rom@n Va por buen camino
Ayuda en consulta para sacar kardex

saludos a todos los expertos del club delphi

estoy haciendo un sistema en delphi7 y access, en el cual ocupo sacar un reporte de kardex o movimientos de un producto en especial y de un almacen en especial, todo esto con un rango de fechas, fecha inicial y fecha final.

la tabla de consulta debe tener un aspecto como el siguiente en un dbgrid:

Fecha |compras |Ajustes_Inventario |Traspasos |Nota_Credito |Ventas
-----------------------------------------------------------------------
01/12/09 | 15 | 0 | 8 | 0 | 50
01/13/09 | 15 | 0 | 0 | 5 | 35
01/30/09 | 0 | 25 | 0 | 0 | 40

las tablas que tienen la informacion son:
tab_movimientos detalle_venta
---------------- --------------
id_det_mov id_det_ven
id_almacen id_almacen
tipo_mov folio_venta
fecha fecha
id_producto id_producto
cantidad cantidad


gracias desde ya espero haber sido claro muchas gracias y hasta pronto
Responder Con Cita
  #2  
Antiguo 13-01-2009
brandolin brandolin is offline
Miembro
 
Registrado: jul 2003
Ubicación: Mendoza
Posts: 324
Poder: 21
brandolin Va por buen camino
La verdad que mucho no se entiende de donde sacas la informacion, pero aparentemente lo que necesitas es hacer un pasaje de filas a columnas ¿¿??

Yo hice algo similar con la siguiente consulta, espero te sirva
Código SQL [-]
select 
   a1.cod_clasificacion, 
   c1.nombre_clasif,
   SUM(CASE cc.tipo_comp WHEN 1 THEN cd.costo_total ELSE 0 END) AS compras, 
   SUM(CASE cc.tipo_comp WHEN 2 THEN cd.costo_total ELSE 0 END) AS ventas, 
   SUM(CASE cc.tipo_comp WHEN 3 THEN cd.costo_total ELSE 0 END) AS transferencias, 
   SUM(CASE cc.tipo_comp WHEN 5 THEN cd.costo_total ELSE 0 END) AS devoluciones, 
   SUM(CASE cc.tipo_comp WHEN 6 THEN cd.costo_total ELSE 0 END) AS destruccion
   from comp_mov_deposito_cab cc 
   inner join comp_mov_deposito_det cd on   cc.num_comp_armado = cd.num_comp_armado 
  inner join articulos a1 on cd.cod_articulo=a1.cod_articulo
  inner join clasificaciones c1 on a1.cod_clasificacion = c1.cod_clasificacion
  group by a1.cod_clasificacion, c1.nombre_clasif;

Si no se entiende la idea puedo simplificarla un poco, pero el secreto esta en el uso del CASE segun el tipo de Comprobante (en mi caso) de movimiento en el tuyo.

Suerte.
Responder Con Cita
  #3  
Antiguo 13-01-2009
Avatar de BlueSteel
[BlueSteel] BlueSteel is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Concepción - Chile
Posts: 2.310
Poder: 23
BlueSteel Va por buen camino
Wink

Hola

y la consulta cual es ??? será como realizar la sentencia sql adecuada ???

indicastes 2 tablas y varios campos ??? cuales corresponden a cada tabla ??

creo que debes probar con una consulta similar a la siguiente... claro esta con tus propios campos y tablas... quizas cuando declares la fecha tengas algun problema pero dependera del formato
Código SQL [-]
Select campos
FROM  tabla1, tabla2
Where Fecha Between :=Fecha1 And :=Fecha2
And Campoa.Tabla1 = Campob.Tabla2

salu2
__________________
BlueSteel
Responder Con Cita
  #4  
Antiguo 17-01-2009
Rom@n Rom@n is offline
Miembro
 
Registrado: oct 2007
Posts: 25
Poder: 0
Rom@n Va por buen camino
mi solucion del problema del kardex

hola muchas gracias por tu respuesta, es muy parecida a la consulta que
necesito aunque en acces el case no funciona, pero puedo usar el iff que funciona
perfectamente igual, y la unica diferencia de tu consulta y la mia
esque los detalles de ventas los tengo en tablas diferentes y no en la misma
tabla de movimienos por lo que estoy tratando de solucionar mi problema
uniendo estas tablas con la funcion UNION.


SELECT *
FROM (select c.fecha,c.id_almacen,dm.id_producto,dm.cantidad,dm.tipo_mov
from tab_compra c inner join tab_detalle_movimientos dm on(c.id_compra=dm.folio)
UNION select v.fecha,v.id_almacen,dv.id_producto,dv.cantidad,dv.tipo_mov
from tab_detalle_pago_venta v inner join tab_detalle_venta dv on(v.id_venta=dv.id_venta)) AS movimientos


con el resulrado de esta consulta hago otra consulta, y listo



select fecha as Fecha,
Sum(IIf(tipo_mov=1,cantidad,0)) AS [Ajustes/Inv],
Sum(IIf(tipo_mov=2,cantidad,0)) AS Traspasos,
Sum(IIf(tipo_mov=3,cantidad,0)) AS Compras,
Sum(IIf(tipo_mov=4,cantidad,0)) AS [Nota/Credito],
Sum(IIf(tipo_mov=5,cantidad,0)) AS Ventas
from sql_kardex_union
where fecha>=:fi and fecha<=:ff and id_almacen=:id_alma
and id_producto=:id_prod
group by id_producto,fecha
order by fecha
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
ayuda consulta sql para reporte hawerd gutierre SQL 2 08-02-2008 15:39:09
Como sacar el valor de una consulta? mariofur SQL 1 02-06-2007 20:50:45
Sacar el primer resultado de una consulta con varios VRO Firebird e Interbase 5 04-05-2007 16:23:14
Ayuda con consulta SQL para un novato Stilgar SQL 10 03-05-2007 23:01:45
Sacar habitaciones libres por dia - Problema consulta SQL- VRO Firebird e Interbase 0 01-09-2005 11:12:22


La franja horaria es GMT +2. Ahora son las 11:41:37.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi