Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > MS SQL Server
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-02-2019
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 629
Poder: 12
look Va por buen camino
Sum donde el total sea igual a un valor

hola amigos , tengo la siguiente SQL:

Código SQL [-]
  SELECT
  SUPERVIS.COD_ESC,
  SUPERVIS.COD_SUP,
  VENTAS.COD_FAM,
  SUM(VENTAS.CANT * PRODUCTS.PES_VOL) AS TOTAL
  FROM ZONAS
  INNER JOIN SUCURSALS ON SUCURSALS.COD_ZON = ZONAS.COD_ZON  
  INNER JOIN JEFES ON JEFES.COD_SUC = SUCURSALS.COD_SUC    
  INNER JOIN SUPERVIS ON SUPERVIS.COD_JEF = JEFES.COD_JEF 
  INNER JOIN RUTAS ON RUTAS.COD_SUP = SUPERVIS.COD_SUP 
  INNER JOIN VENTAS ON VENTAS.COD_RUT = RUTAS.COD_RUT
  INNER JOIN PRODUCTS ON PRODUCTS.COD_PROD = VENTAS.COD_PROD
  INNER JOIN FAMILIAS ON FAMILIAS.COD_FAM = VENTAS.COD_FAM
  WHERE 
  DATEPART(MONTH,VENTAS.Fech_fact) = 1
  AND DATEPART(YEAR,VENTAS.Fech_fact) = 2019
  AND SUPERVIS.COD_SUP = 10111 
  AND VENTAS.TIP_DOC NOT IN ( 'z105','z106','z405')
  GROUP BY 
  SUPERVIS.COD_SUP,
  VENTAS.COD_FAM,
  SUPERVIS.COD_ESC

lo que me da el siguiente resultado:



Código:
totalizando: 95,190.35
lo que estoy tratando de hacer:

Código SQL [-]
  SUPERVIS.COD_ESC,
  SUPERVIS.COD_SUP,
  VENTAS.COD_FAM,
  SUM(VENTAS.CANT * PRODUCTS.PES_VOL) AS TOTAL
  FROM ZONAS
  INNER JOIN SUCURSALS ON SUCURSALS.COD_ZON = ZONAS.COD_ZON  
  INNER JOIN JEFES ON JEFES.COD_SUC = SUCURSALS.COD_SUC    
  INNER JOIN SUPERVIS ON SUPERVIS.COD_JEF = JEFES.COD_JEF 
  INNER JOIN RUTAS ON RUTAS.COD_SUP = SUPERVIS.COD_SUP 
  INNER JOIN VENTAS ON VENTAS.COD_RUT = RUTAS.COD_RUT
  INNER JOIN PRODUCTS ON PRODUCTS.COD_PROD = VENTAS.COD_PROD
  INNER JOIN FAMILIAS ON FAMILIAS.COD_FAM = VENTAS.COD_FAM
  WHERE 
  DATEPART(MONTH,VENTAS.Fech_fact) = 1
  AND DATEPART(YEAR,VENTAS.Fech_fact) = 2019
  AND SUPERVIS.COD_SUP = 10111 
  AND VENTAS.TIP_DOC NOT IN ( 'z105','z106','z405')
  GROUP BY 
  SUPERVIS.COD_SUP,
  VENTAS.COD_FAM,
  SUPERVIS.COD_ESC
  HAVING   SUM(VENTAS.CANT * PRODUCTS.PES_VOL) <= 75000

pero la consulta muestra el mismo resultado, al hacer la suma total no se acerca a 75000,
la idea es que me muestre el detalle , donde la sumatoria de todo ese detalle que mostre sea <= 75000.

Me hechan una mano?.

Saludos!
__________________
all your base are belong to us
Responder Con Cita
  #2  
Antiguo 12-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 29.259
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Creo que tendrás que hacer un "Stored procedure" con un bucle que vaya sumando mientras la suma sea menor a esa cantidad.
Si lo he entendido bien.
Responder Con Cita
  #3  
Antiguo 12-02-2019
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 629
Poder: 12
look Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Creo que tendrás que hacer un "Stored procedure" con un bucle que vaya sumando mientras la suma sea menor a esa cantidad.
Si lo he entendido bien.
si amigo, justo esto pensaba, pero como ultima opcion.
me dan alguna idea del pocedimiento?, estoy pensando hacer un bucle que vaya sumando dia a dia hasta llegar al parametro requerido.
cualquier idea es bienvenida.
__________________
all your base are belong to us
Responder Con Cita
  #4  
Antiguo 12-02-2019
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.599
Poder: 19
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Para este caso es ideal las funciones window:

https://tapoueh.org/blog/2013/08/und...dow-functions/

que están desde sql server 2012:

https://docs.microsoft.com/en-us/sql...ql-server-2017

en especial, creo que te sirve un "moving average".
__________________
Nuevo Blog.
Ahora en Twitter!.
Responder Con Cita
  #5  
Antiguo 12-02-2019
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 629
Poder: 12
look Va por buen camino
Cita:
Empezado por mamcx Ver Mensaje
Para este caso es ideal las funciones window:

https://tapoueh.org/blog/2013/08/und...dow-functions/

que están desde sql server 2012:

https://docs.microsoft.com/en-us/sql...ql-server-2017

en especial, creo que te sirve un "moving average".
Gracias amigo, estudiare lo que me pasaste.
tambien, si hechas una mano modificando mi SQL lo agradecere mucho, asi tendre mas clara la idea.

Saludos!
__________________
all your base are belong to us
Responder Con Cita
  #6  
Antiguo 12-02-2019
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 629
Poder: 12
look Va por buen camino
Hola amigos, quiciera agregarle la columna de acumulados, esto es lo que tengo:

Código SQL [-]
  SELECT
  SUPERVIS.COD_ESC,
  SUPERVIS.COD_SUP,
  VENTAS.COD_FAM,
  SUM(VENTAS.CANT * PRODUCTS.PES_VOL) AS TOTAL,
  SUM(VENTAS.CANT * PRODUCTS.PES_VOL) OVER (PARTITION BY VENTAS.COD_FAM) as ACUMULADO
  FROM ZONAS
  INNER JOIN SUCURSALS ON SUCURSALS.COD_ZON = ZONAS.COD_ZON  
  INNER JOIN JEFES ON JEFES.COD_SUC = SUCURSALS.COD_SUC    
  INNER JOIN SUPERVIS ON SUPERVIS.COD_JEF = JEFES.COD_JEF 
  INNER JOIN RUTAS ON RUTAS.COD_SUP = SUPERVIS.COD_SUP 
  INNER JOIN VENTAS ON VENTAS.COD_RUT = RUTAS.COD_RUT
  INNER JOIN PRODUCTS ON PRODUCTS.COD_PROD = VENTAS.COD_PROD
  INNER JOIN FAMILIAS ON FAMILIAS.COD_FAM = VENTAS.COD_FAM
  WHERE 
  DATEPART(MONTH,VENTAS.Fech_fact) = 1
  AND DATEPART(YEAR,VENTAS.Fech_fact) = 2019
  AND SUPERVIS.COD_SUP = 10111 
  AND VENTAS.TIP_DOC NOT IN ( 'z105','z106','z405')
  GROUP BY 
  SUPERVIS.COD_SUP,
  VENTAS.COD_FAM,
  SUPERVIS.COD_ESC

Pero me da error, ¿que podra ser?
__________________
all your base are belong to us
Responder Con Cita
  #7  
Antiguo 12-02-2019
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 29.259
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por look Ver Mensaje
Pero me da error, ¿que podra ser?
¿Qué error?
Responder Con Cita
  #8  
Antiguo 12-02-2019
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 629
Poder: 12
look Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Qué error?
Cita:
Mens. 8120, Nivel 16, Estado 1, Línea 6
La columna 'VENTAS.CANT' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.
Mens. 8120, Nivel 16, Estado 1, Línea 6
La columna 'PRODUCTS.PES_VOL' de la lista de selección no es válida, porque no está contenida en una función de agregado ni en la cláusula GROUP BY.
.
:/ ......
__________________
all your base are belong to us

Última edición por Casimiro Notevi fecha: 12-02-2019 a las 22:32:34.
Responder Con Cita
  #9  
Antiguo 12-02-2019
Avatar de mamcx
mamcx mamcx is online now
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.599
Poder: 19
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Cita:
Empezado por look Ver Mensaje
Gracias amigo, estudiare lo que me pasaste.
tambien, si hechas una mano modificando mi SQL lo agradecere mucho, asi tendre mas clara la idea.

Saludos!
Y como quieres que lo haga? No tengo los datos iniciales. Si suponemos que el resultado que mostraste esta bien y de hay se hace el filtro, entonces es un subquery, y al menos necesitaríamos los datos en texto.
__________________
Nuevo Blog.
Ahora en Twitter!.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Si Factura Cancelada Total Igual A 0 JXJ Firebird e Interbase 4 27-08-2012 23:22:25
Mostrar valor X y Y en punto dónde clico en chart vivamotos C++ Builder 2 15-12-2011 15:59:48
Numero Mayor igual , Menor igual... Problema ZiriusB OOP 12 27-06-2011 17:31:24
Eliminar de un Select registros con valor de un campo igual danilo_candales SQL 3 15-01-2008 15:32:55
Donde se almacena el valor MAX ilichhernandez SQL 5 16-08-2007 23:18:05


La franja horaria es GMT +2. Ahora son las 21:57:48.


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