FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
consulta firebird 3 con IIF y group by
Buenas tardes compañeros.
Disculpen que no se me ocurrio un titulo mas claro Pero la cuestion es la siguiente tengo una consulta para generar estadisticas de articulos vendidos. Y necesito entre varias cosas calcular el margen de ganancia I para evitar error de division por 0 uso IIF Y resulta que al agregar esa linea me pide que agrupe por el campo detalleventa.costo (que es algo que no quiero porque no sirve) Ese campo es siempre distinto, seria el ultimo costo del articulo vendido, y lo utilizo para calcular el costo promedio de un articulo a lo cargo del tiempo y como cambia no seria un campo para agrupar, pero al calcular con el IIF me pide que agrupe por ese campo. ¿de que forma podria evitar que me lo pida en group by?
|
#2
|
|||
|
|||
onsulta firebird 3 con IIF y group by
Buenas Noches,
con firebird3 puede usa una function sql y no necesita agrupar |
#4
|
|||
|
|||
Cita:
Estoy intetando usar CASE de la siguiente manera, pero me sigue pidiendo que agrupe por el campo "detalleventa.costo" para este caso del IIF
Lo he traducido al siguiente CASE
Y necesito agrupar por estos campos group by detalleventa.art, detalleventa.descripcion, alicuotas.porcent, articulos.costo, articulos.peso Para generar la estadistica y que quede una linea unica por articulo vendido (detalleventa.art es el ID de art ) con las sumatorias y promedios calculados de cada articulo Y al pedirme que incorpore el campo detalleventa.costo (que es el ultimo costo de venta) como ese con la inflacion va cambiando a lo largo del tiempo no es unico y de pronto me encuentro con registros de articulos duplicados y agrupados por el costo de venta |
#5
|
|||
|
|||
Cita:
OJO que al resultado lo necesito agrupado por los campos deseados para que queda un registro por cada articulo existente, con los promedios y calculos de venta. |
#6
|
||||
|
||||
Hola,
añade esto IIF ( (detalleventa.costo * alicuotas.porcent) > 0 al group by Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#7
|
|||
|
|||
Cita:
me da error del AS, le saco el as margen y da error Cannot use an aggregate or window function in a GROUP BY clause Pero no entiendo que agregarle IIF al group pueda ser la solucion. Lo del case parece acercarse Pero necesito agrupar el resultado por los campos que tengo en group by |
#8
|
||||
|
||||
Si te pide otro campo agregado es que lo necesita. No hay más vuelta de rosca.
Añade al group by solo: ' (detalleventa.costo * alicuotas.porcent) ', con eso debería funcionar y luego haz una select de tu select para agrupar el resultado como tu quieres. Tendrás que probar si tienes una equivalencia matemática con el resultado, porque esto parece un problema de mates no de SQL. O tendrás que tratar de calcularlo de otro modo. Siempre hay más de un sistema. También puedes probar a construir primero una tabla con los cálculos que necesitas (tupla a tupla), sin agrupar y luego sobre esa select hacer otra agrupada:
Última edición por kuan-yiu fecha: 18-01-2022 a las 14:47:59. |
#9
|
|||
|
|||
No se me había ocurrido un Selec del otro Select, eso ayudó. Gracias a todos
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Consulta con Group By | jars | SQL | 2 | 12-11-2012 14:47:02 |
Consulta con Group By y Max | gluglu | SQL | 3 | 21-03-2012 16:17:21 |
Consulta con Group By SQL | DasGrun | SQL | 2 | 22-01-2010 17:28:02 |
Consulta con group by y min | zvf | SQL | 2 | 21-04-2008 21:13:25 |
Consulta Con Group By | VRO | SQL | 9 | 30-08-2004 19:06:07 |
|