[ Foro de SQL (y MySQL) ]

Agrupamiento

23-Oct-2018 15:33
Invitado (Fabian)
1 Respuestas

Buenas tardes, tengo un problema con el agrupamiento, paso a explicar, en este select, hasta el ultimo UNION tengo calculo de partidas multiplicando INDIVIDUALMENTE POR 62.76 como se ve, luego se resultado tengo que volver a multiplicarlo INDIVIDUALMENTE por la tabla del ultimo UNION esta info_tabla_efectivo_minimo_tasas donde existen las partidas con un campo de tasa % para para cada una de ellas, por eso en el segundo select hago tt1 * tt2 tt2 es el ultimo union, ahi es donde me falla, por que hasta antes de eso multiplica individualmente cada partida y los valores son correctos, pero luego la suma de esos valores la multiplica contra la suma de ambos porcentajes, en lugar de multiplicarlo individualmente y por ultimo sumar todos los importes, me falla el ultimo agrupamiento, podran darme una mano?gracias

 
SELECT sum(tt3) AS resultado FROM (
SELECT codigo_partida ,tt1 , tt2 , (tt1 * tt2 ) AS Tt3 FROM (
SELECT codigo_partida ,sum(tot1 ) AS tt1 , sum(tot2) AS tt2 FROM (
SELECT codigo_partida, tot1 , 0 AS Tot2 FROM ( 
SELECT codigo_partida, sum(imp1) AS tot1 FROM ( 
SELECT codigo_partida , (importe * 62.76 ) AS imp1 
FROM efeabr 
WHERE codigo_partida IN("101401","101402") AND 
codigo_moneda_especie=1 AND categoria=1 
UNION
SELECT codigo_partida , importe AS imp1
FROM efeabr WHERE codigo_partida IN("101401","101402") AND 
codigo_moneda_especie=1 AND categoria=1 AND NOT
codigo_partida IN (SELECT codigo_partida FROM marzo )
) AS X
GROUP BY codigo_partida
) AS X1
UNION
SELECT codigo_partida, 0 AS Tot1 , tasa AS Tot2
FROM info_tabla_efectivo_minimo_tasas 
WHERE codigo_partida IN("101401","101402" ) AND baja_tasa=204007
) ) AS X2 GROUP BY codigo_partida
 
) AS X4 GROUP BY codigo_partida
 


 


28-Oct-2018 00:07
Nacho Cabanes (+37)

Resulta difícil de seguir, con tanto anidamiento y nombres de variables tan cortos, y más sin poder hacer pruebas con las tablas.

Si usas MySQL y tienes PhpMyAdmin, prueba a recrear las consultas de "dentro a fuera" (porque hay muchas encadenadas), para ver en qué momento PhpMyAdmin te da algún mensaje de error, de variable inexistente, ambigua o lo que esté provocado el problema.






Si ya eres usuario del sistema, puedes contestar desde tu cuenta y así ganar prestigio.

Si sólo eres un visitante, puedes optar por...