Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » SQL Server »

[SOLUCIONADO] Duda con sum

Estas en el tema de Duda con sum en el foro de SQL Server en Foros del Web. @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código SQL: Ver original SELECT A . CardCode , A . CardName , A . DocNum , SUM ( ( B . Quantity ...
  #1 (permalink)  
Antiguo 02/04/2014, 10:18
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 10 años, 6 meses
Puntos: 0
Duda con sum

Código SQL:
Ver original
  1. SELECT A.CardCode,A.CardName,A.DocNum, SUM((B.Quantity * B.Price)-A.DiscSum) AS ValorNeto
  2. FROM oinv A INNER JOIN inv1 B
  3. ON A.docentry=B.DocEntry
  4. AND A.docNum=30027
  5. GROUP BY
  6. A.CardCode
  7. ,A.CardName
  8. ,A.DocNum

el problema radica que si tengo en la tabla de detalle = B tengo 10 Lineas
pues me hace 10 veces el descuento sobre el valor calculado ValorNeto

de antemano quedo agradecido por su orientación
para poder hacerlo

Cordial saludo
  #2 (permalink)  
Antiguo 02/04/2014, 10:28
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda con sum

un ejemplo de tus datos y que necesitas....por favor
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 02/04/2014, 15:22
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Duda con sum

Hola y muchas gracias por responder

Resulta que en la tabla OINV se almacena el valor descuento
que tiene una factura

Ahora en la tabla INV1 se almacen el valor de cada item
y la cantidad

Hago un SUM (Quantity * valor) as valorBruto de la tabla INV1

Ahora necesito calcular el valor Neto que es Valor Bruto - descuento

Asi como lo muestro en la consulta pero no me funciona

Espero haber sido claro

Cordial Saludo
  #4 (permalink)  
Antiguo 02/04/2014, 15:24
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 17 años, 8 meses
Puntos: 774
Respuesta: Duda con sum

un ejemplo de tus datos y que esperas obtener ayudaria mas....
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 02/04/2014, 16:32
 
Fecha de Ingreso: abril-2014
Mensajes: 32
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: Duda con sum

Estas restando el valor por cada línea de B y luego es que sumas.

Deberías sumar todas las líneas de B y luego restar A
(Creo que a eso es que te refiere, perdona si comprendí mal

Prueba así:

Código SQL:
Ver original
  1. SELECT A.CardCode,A.CardName,A.DocNum, SUM(B.Quantity * B.Price)-MAX(A.DiscSum) AS ValorNeto
  2. FROM oinv A INNER JOIN inv1 B
  3. ON A.docentry=B.DocEntry
  4. AND A.docNum=30027
  5. GROUP BY
  6. A.CardCode
  7. ,A.CardName
  8. ,A.DocNum


También podrías generar la consulta de esta forma:

Código SQL:
Ver original
  1. SELECT A.CardCode, A.CardName, A.DocNum, (SELECT SUM(B.Quantity * B.Price) AS tot FROM inv1 AS B WHERE A.docentry = B.DocEntry) - A.DiscSum AS ValorNeto
  2. FROM oinv AS A
  3. WHERE A.docNum = 30027

Última edición por rmaeloy; 02/04/2014 a las 16:43
  #6 (permalink)  
Antiguo 02/04/2014, 16:50
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Duda con sum

Yo intentaría otro acercamiento:
Código SQL:
Ver original
  1. SELECT
  2.     A.CardCode,
  3.     A.CardName,
  4.     A.DocNum,
  5.     (B2.ValorNeto - A.DiscSum) ValorNeto
  6. FROM oinv A INNER JOIN
  7.     ( SELECT B.DocEntry, SUM(B.Quantity * B.Price) ValorNeto
  8.         FROM inv1 B
  9.     GROUP BY B.DocEntry) B2 ON A.docentry = B2.DocEntry
  10. WHERE A.docNum=30027
  11. GROUP BY A.CardCode, A.CardName, A.DocNum
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 08/04/2014, 14:20
 
Fecha de Ingreso: octubre-2013
Mensajes: 34
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Duda con sum

Muy buenas tardes muchas gracias rmaeloy,gnzsoloyo me funciono de maravilla
una mas a mi cartilla de SQL

Código SQL:
Ver original
  1. SELECT A.CardCode, A.CardName, A.DocNum, (SELECT SUM(B.Quantity * B.Price) AS tot FROM inv1 AS B WHERE A.docentry = B.DocEntry) - A.DiscSum AS ValorNeto
  2. FROM oinv AS A
  3. WHERE A.docNum = 30027


Cordial saludo
desde Bogota

Última edición por gnzsoloyo; 08/04/2014 a las 14:34

Etiquetas: select, sum, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:38.