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

consulta para acumular datos

Estas en el tema de consulta para acumular datos en el foro de SQL Server en Foros del Web. como puedo hacer la siguiente en sql, tengo la idea pero no como plasmarla en el codigo la idea es la siguiente, tenemos una tabla ...
  #1 (permalink)  
Antiguo 21/03/2013, 13:44
Avatar de chris225  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 2
consulta para acumular datos

como puedo hacer la siguiente en sql, tengo la idea pero no como plasmarla en el codigo

la idea es la siguiente, tenemos una tabla de vendedores hay 2 tipos de vendedores internos y externos donde los internos cobran la comicion por todas las facturas que hagan todos los internos y los externos solo cobran por las comisiones de cada uno un ejemplo


Vendedor factura interno
V1 1 si
V2 2 si
V3 3 no
V3 4 no
V1=Acum(1+2) interno=si

V2=Acum(1+2) interno=si

V3=Acum(3+4) interno=no

mas o menos asi tengo la idea pero no se como crear la consulta en sql a ver si me aconsejan ideas
  #2 (permalink)  
Antiguo 21/03/2013, 13:55
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: consulta para acumular datos

ideas...usa un case :)
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 21/03/2013, 14:06
Avatar de chris225  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: consulta para acumular datos

aca tengo la consulta pero no se acumular

select
((BRUTO - (select BRUTO from TRADE where tipodcto in ('NU', 'NB', 'NC') and Codven='43005422' and NRODCTO='610') *
(SELECT (PorcReca/100)FROM GS_Recaudo where (DATEDIFF(day, '2010-03-29','2010-03-29') between Desde and Hasta)) *
(select (PorcReca / 100) from GS_ConfEscal where Nombre='escalafon1'))
),trade.nrodcto,trade.tipodcto,trade.codven,venden .interno
from trade,venden
  #4 (permalink)  
Antiguo 21/03/2013, 14:07
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: consulta para acumular datos

prueba con esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. vendedor VARCHAR(5),
  4. factura INT,
  5. interno VARCHAR(3)
  6. )
  7. DELETE FROM #temp
  8. INSERT INTO #temp VALUES ('V1' ,1 ,'si')
  9. INSERT INTO #temp VALUES ('V2' ,2 ,'si')
  10.  
  11. INSERT INTO #temp VALUES ('V3' ,4 ,'no')
  12. INSERT INTO #temp VALUES ('V3' ,3 ,'no')
  13. INSERT INTO #temp VALUES ('V4' ,1 ,'si')
  14. INSERT INTO #temp VALUES ('V5' ,5 ,'no')
  15.  
  16.  
  17. SELECT vendedor,total FROM #temp,
  18. (
  19. SELECT SUM(factura) total FROM #temp WHERE interno='si') AS t1 WHERE #temp.interno='si'
  20. UNION
  21. SELECT vendedor,SUM(factura) AS total FROM #temp WHERE interno='no' GROUP BY vendedor

saludos!
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #5 (permalink)  
Antiguo 21/03/2013, 14:50
Avatar de chris225  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: consulta para acumular datos

Cita:
Iniciado por Libras Ver Mensaje
prueba con esto:

Código SQL:
Ver original
  1. CREATE TABLE #temp
  2. (
  3. vendedor VARCHAR(5),
  4. factura INT,
  5. interno VARCHAR(3)
  6. )
  7. DELETE FROM #temp
  8. INSERT INTO #temp VALUES ('V1' ,1 ,'si')
  9. INSERT INTO #temp VALUES ('V2' ,2 ,'si')
  10.  
  11. INSERT INTO #temp VALUES ('V3' ,4 ,'no')
  12. INSERT INTO #temp VALUES ('V3' ,3 ,'no')
  13. INSERT INTO #temp VALUES ('V4' ,1 ,'si')
  14. INSERT INTO #temp VALUES ('V5' ,5 ,'no')
  15.  
  16.  
  17. SELECT vendedor,total FROM #temp,
  18. (
  19. SELECT SUM(factura) total FROM #temp WHERE interno='si') AS t1 WHERE #temp.interno='si'
  20. UNION
  21. SELECT vendedor,SUM(factura) AS total FROM #temp WHERE interno='no' GROUP BY vendedor

saludos!
gracias por responder pero no me sirve asi porque el valor de la comision se deben hacer los calculos en la consulta porque no esta en el sistema debe calcular la comision y mostrarla al usuario
  #6 (permalink)  
Antiguo 21/03/2013, 15:59
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: consulta para acumular datos

la solucion que te di es solo para que te des una idea de como lograr lo que necesitas, no te va a resolver tu problema.
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #7 (permalink)  
Antiguo 22/03/2013, 11:19
Avatar de iislas
Colaborador
 
Fecha de Ingreso: julio-2007
Ubicación: Mexico, D.F.
Mensajes: 6.482
Antigüedad: 16 años, 9 meses
Puntos: 180
Respuesta: consulta para acumular datos

¿Ha no?, pues que mal plan.......
__________________
MCTS Isaias Islas
  #8 (permalink)  
Antiguo 22/03/2013, 11:21
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: consulta para acumular datos

Cita:
Iniciado por iislas Ver Mensaje
¿Ha no?, pues que mal plan.......


jajajajajaja
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #9 (permalink)  
Antiguo 22/03/2013, 12:59
Avatar de chris225  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: consulta para acumular datos

no hay otro metodo que acumule los datos de subconsultas?
  #10 (permalink)  
Antiguo 22/03/2013, 13:13
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: consulta para acumular datos

a ver amigo, puedes poner un ejemplo de lo que te regresa el query ese que tienes?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #11 (permalink)  
Antiguo 22/03/2013, 13:21
Avatar de chris225  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: consulta para acumular datos

Cita:
Iniciado por Libras Ver Mensaje
a ver amigo, puedes poner un ejemplo de lo que te regresa el query ese que tienes?
este es lo hago en una funcion

(Select sum(TD.BRUTO - isnull((select SUM(CANTIDAD*VALORUNIT) from MVTRADE where TIPODCTONC in ('FC') and NUMFACTNC=TD.NRODCTO),0))
* (select (PorcReca / 100) from GS_ConfEscal where Nombre=VE.NOMESCALAFON) from Trade as TD
inner join GS_Recaudo AS RC on RC.CodeVen = TD.CODVEN
inner join VENDEN AS VE ON VE.CODVEN = RC.CodeVen
where TD.TIPODCTO IN ('FC') and TD.CODVEN=VE.CODVEN)


y necesito como un sum a todo eso pero cuando se lo doy en otra funcion que invoco a esta me sale el siguiente error

"La subconsulta ha devuelto más de un valor, lo que no es correcto cuando va a continuación de =, !=, <, <=, >, >= o cuando se utiliza como expresión."

  #12 (permalink)  
Antiguo 22/03/2013, 13:33
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: consulta para acumular datos

un sum a todo eso seria

select sum(campos) from(
tu query
) as t1

pero puedes poner un ejemplo de los datos que te regresa el query?
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #13 (permalink)  
Antiguo 22/03/2013, 14:32
Avatar de chris225  
Fecha de Ingreso: octubre-2012
Ubicación: Medellin
Mensajes: 149
Antigüedad: 11 años, 5 meses
Puntos: 2
Respuesta: consulta para acumular datos

Cita:
Iniciado por Libras Ver Mensaje
un sum a todo eso seria

select sum(campos) from(
tu query
) as t1

pero puedes poner un ejemplo de los datos que te regresa el query?
no puedo sumar campos porque los campos son para calculos

954762.750000

la sumatoria de todos los datos que trae la consulta porque eso son comisiones que se van a pagar

Etiquetas: acumular, sql, 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 19:33.