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

[SOLUCIONADO] problema de cálculo con una CTE

Estas en el tema de problema de cálculo con una CTE en el foro de SQL Server en Foros del Web. Buenas tengan todos, Me acerco a ustedes para solicitar su ayuda, estoy trabajando con una CTE en sql server 2008 r2 y el problema es ...
  #1 (permalink)  
Antiguo 30/01/2014, 11:52
 
Fecha de Ingreso: enero-2014
Mensajes: 10
Antigüedad: 10 años, 9 meses
Puntos: 0
problema de cálculo con una CTE

Buenas tengan todos,

Me acerco a ustedes para solicitar su ayuda, estoy trabajando con una CTE en sql server 2008 r2 y el problema es que no me ejecuta una suma, pongo el código

Código:
WITH DETALBARAN AS
(
SELECT
ADC.PREFIJOPED, ADC.AGENTEPED, ADC.NUMPED, ACC.SUALBARAN, REFERENCIA, SUM(ACL.UNIDADESTOTAL) AS TOTUNID, ACL.PRECIO AS PRECIOEUROS, (ACL.PRECIO*SUM(ACL.UNIDADESTOTAL)) AS TOTALEUROS, ADC.TIPOCAMBIO, (ACL.PRECIO*ADC.TIPOCAMBIO) AS COMPRAUNITPESOS, ADP.GASTOS, (ACL.PRECIO*SUM(ACL.UNIDADESTOTAL)*ADC.TIPOCAMBIO) AS TOTAPESOS
FROM ALBCOMPRALIN ACL 
LEFT JOIN ALBCOMPRACAB ACC 
ON ACC.NUMALBARAN=ACL.NUMALBARAN AND ACC.NUMSERIE=ACL.NUMSERIE
LEFT JOIN ADSA_PEDIMENTOSLIN ADP 
ON ADP.SUALBARAN=ACC.SUALBARAN
LEFT JOIN ADSA_PEDIMENTOSCAB ADC 
ON ADC.NUMPED=ADP.NUMPED AND ADC.PREFIJOPED=ADP.PREFIJOPED AND ADC.AGENTEPED=ADP.AGENTEPED
WHERE ADC.NUMPED = 3003519 AND ACC.SUALBARAN = 'ENV 41/07331-13'
GROUP BY ADC.PREFIJOPED, ADC.AGENTEPED, ADC.NUMPED, ACC.SUALBARAN, REFERENCIA, ACL.NUMSERIE, ACL.PRECIO, ADC.TIPOCAMBIO, ADP.GASTOS
)
SELECT *, TOTAPESOS/SUM(TOTAPESOS) AS PROPORCION
FROM DETALBARAN
GROUP BY DETALBARAN.PREFIJOPED, DETALBARAN.AGENTEPED, DETALBARAN.NUMPED, DETALBARAN.SUALBARAN, DETALBARAN.REFERENCIA, DETALBARAN.TOTUNID,
DETALBARAN.PRECIOEUROS, DETALBARAN.TOTALEUROS, DETALBARAN.TIPOCAMBIO, DETALBARAN.COMPRAUNITPESOS, DETALBARAN.GASTOS, DETALBARAN.TOTAPESOS
donde esta el problema es en TOTAPESOS/SUM(TOTAPESOS) AS PROPORCION, este calculo me debería dar una columna como esta

0.083873915
0.238190955
0.174326176
0.174326176
0.062128826
0.131566926
0.023024212
0.054088625
0.058474189

y no esto

1
1
1
1
1
1
1
1
1

la función SUM no esta funcionando, alguien puede darme una mano?

Gracias de antemano.
  #2 (permalink)  
Antiguo 30/01/2014, 11:56
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: problema de cálculo con una CTE

estas agrupando por todos los campos esto es corrrecto????
__________________
What does an execution plan say to t-sql query? Go f**k yourself, if you are not happy with me
  #3 (permalink)  
Antiguo 30/01/2014, 12:04
 
Fecha de Ingreso: enero-2014
Mensajes: 10
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema de cálculo con una CTE

No exactamente, solo aquellos campos que la consulta solicita, o de lo contrario lanza un error.
  #4 (permalink)  
Antiguo 30/01/2014, 12:11
Avatar de Libras
Colaborador
 
Fecha de Ingreso: agosto-2006
Ubicación: En la hermosa perla de occidente
Mensajes: 7.412
Antigüedad: 18 años, 3 meses
Puntos: 774
Respuesta: problema de cálculo con una CTE

jajaja sorry i got it :P, lo que esta pasando es que tienes que convertir la funcion a decimal para que te muestre el resultado como quieres de lo contrario siempre te mostrara 1, te dejo un link

http://blog.sqlauthority.com/2008/09...sion-by-float/


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 30/01/2014, 15:39
 
Fecha de Ingreso: enero-2014
Mensajes: 10
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema de cálculo con una CTE

gracias por el link,

y he implementado CONVERT(FLOAT,

Código:
WITH DETALBARAN AS
(
SELECT REFERENCIA, SUM(ACL.UNIDADESTOTAL) AS TOTUNID, 
ACL.PRECIO AS PRECIOEUROS, (ACL.PRECIO*SUM(ACL.UNIDADESTOTAL)) AS TOTALEUROS, ADC.TIPOCAMBIO, 
(ACL.PRECIO*ADC.TIPOCAMBIO) AS COMPRAUNITPESOS,
ADP.GASTOS, CONVERT(FLOAT,(ACL.PRECIO*SUM(ACL.UNIDADESTOTAL)*ADC.TIPOCAMBIO)) AS TOTAPESOS
FROM ALBCOMPRALIN ACL 
LEFT JOIN ALBCOMPRACAB ACC 
ON ACC.NUMALBARAN=ACL.NUMALBARAN AND ACC.NUMSERIE=ACL.NUMSERIE
LEFT JOIN ADSA_PEDIMENTOSLIN ADP 
ON ADP.SUALBARAN=ACC.SUALBARAN
LEFT JOIN ADSA_PEDIMENTOSCAB ADC 
ON ADC.NUMPED=ADP.NUMPED AND ADC.PREFIJOPED=ADP.PREFIJOPED AND ADC.AGENTEPED=ADP.AGENTEPED
WHERE ADC.NUMPED = 3003519 AND ACC.SUALBARAN = 'ENV 41/07331-13'
GROUP BY REFERENCIA, ACL.PRECIO, ADC.TIPOCAMBIO, ADP.GASTOS
)
SELECT *, CONVERT(FLOAT,SUM(TOTAPESOS)) AS PROPORCION
FROM DETALBARAN
GROUP BY DETALBARAN.REFERENCIA, DETALBARAN.TOTUNID, DETALBARAN.PRECIOEUROS, DETALBARAN.TOTALEUROS,
DETALBARAN.TIPOCAMBIO, DETALBARAN.COMPRAUNITPESOS, DETALBARAN.GASTOS, DETALBARAN.TOTAPESOS
pero aún sigue sin funcionar, alguna otra sugerencia?
  #6 (permalink)  
Antiguo 30/01/2014, 16:49
 
Fecha de Ingreso: enero-2014
Mensajes: 10
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: problema de cálculo con una CTE

ya esta resuelto la línea usada es

(TOTAPESOS/SUM(TOTAPESOS) OVER ()) AS PROPORCION

gracias por sus respuestas

Etiquetas: group, select, server, sql
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:03.