y la suma que hago es por grupo de articulo son principales, auxiliares, miscelaneos, gastos y mano de obra, eso me sale bien ya que esta todo en la tabla @presupuesto_det, pero necesito hacer una grafica con esos datos y compararlos contra las ordenes de fabricacion, los datos de precios y cantidades de cada orden como por ejemplo en este caso es la 4 y la 7 estan en varias tablas para lo cual ya hice el query ya que estan en 3 tablas y se ligan a una cuarta para la Orden de Fabricacion, al hacer el vinculo con el query queda bien algo asi
Presupuesto ENC es los proyectos, Presupuesto_Det es la tabla que puse arriba y IGE1 es donde tengo la informacion de las ordenes de fabricacion de donde tengo que sacar las sumas que me faltan por cada tipo principal auxiliar miscelaneo gasto o mano de obra para compararlo contra lo proyectado pero me pasa lo de la primera imagen que puse se hace una redundancia ciclica, no se si me explique un poco mas para ver mi error o como poder hacer el reporte en crystal lo que si es que los hago por separado y me salen bien en dos reportes diferentes el error es cuando ya los trato de juntar y hacer la comparativa del grafico uno a uno
Ampliando un poco la informacion ya simplifique todo en solo dos tablas, lo que se desea es sacar el total de las cuentas 162(Principales), 164(Auxiliares), 167(Miscelaneos), GTO(Gastos) y MOD(Mano de Obra Directa)
Lo Proyectado o partida presupuestaria lo saco con este query
SELECT T0.DocEntry,T0.[U_Proyecto], T0.[U_DescripProyecto], T1.[U_Monto], T1.[U_OF], T1.[U_GpoArticulo]
FROM [dbo].[@PRESUPUESTO_ENC] T0
INNER JOIN [dbo].[@PRESUPUESTO_DET] T1 ON T0.DocEntry = T1.DocEntry
WHERE T1.[U_OF] >0 and T1.[U_GpoArticulo] <> ''
ORDER BY U_PROYECTO, U_OF, U_GpoArticulo
Y las Ordenes de Fabricacion con este otro
SELECT Total=(Price*Quantity), CodGrupo = CAST(T1.[ResType] AS char) , T0.BaseEntry
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
UNION ALL
SELECT Total=(Price*Quantity),CodGrupo = CAST(T1.[ItmsGrpCod] AS char), T0.BaseEntry
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
ORDER BY T0.BaseEntry, CodGrupo
Lo cual me arroja las siguientes tablas, pero al relacionarlas en crystal necesito solo tome de la primera que es la OF 4 una sola vez para yo sacar la suma pero lo toma las X veces que me dio el resultado de la primer tabla como puedo hacer que solo tome 1 ves la OF y poder sacar correctamente los resultados? ya tengo ciclado casi dos semanas con esto :’(, los totales se usaran en una grafica para comparar lo proyectado contra la orden de facturacion
Debo estar muy espeso, que no logro entender el resultado final.
Pero vamos a ver, si en crystal en el informe, le creas el grupo 1 (ordenes de fabricación) y el grupo 2 (grupos de artículos), luego le haces un resumen a todos los níveles tendrías las sumas totales por orden de fabricación y luego las sumas totales por grupos de artículos. Ocultas los detalles y te quedas solo con el resultado de los grupos.
Para la segunda tabla, tendrías que insertar un subinforme en el primero y que el dato de filtrado o ejecución sea por el grupo 1 de orden de fabricacilon o la ejecución tendría que ser por fechas??
Para intentar entenderlo:
si coges de la tabla inv1 y la relacionas con oinv salen todas las facturas de venta.
para obtener un subtotal por grupo de artículos, necesitas ir a la tabla oitm que tiene el dato código de grupo.
bien.
Con esa información en crystal reports, añades grupo1 para el código de artículo y luego resument a nivel de grupo1 y ya tienes los totales por grupo de artículo.
Si previamente quieres un total por factura, grupo1 sería el numero de documento y grupo 2 sería el grupo de artículos y tendrías el total por cada uno además del total del informe.
@fernando_cort, te sugiero que busques en Internet o Youtube cualquier tutorial basico de consultas SQL SERVER, para que asi aprendas sobre las caracteristicas fundamentales de la sentecia SELECT. Para llegar al resultado que necesitas, requieres de funciones de agregado y agrupamiento.
Segun lo que entiendo te refieres a hacer algo asi para la primera consulta:
SELECT SUM(Price*Quantity) as Total, CodGrupo = CAST(T1.[ResType] AS char) , T0.BaseEntry
FROM IGE1 T0
INNER JOIN ORSC T1 ON T0.[ItemCode] = T1.[VisResCode]
GROUP BY T0.BaseEntry, T1.[ResType]
UNION ALL
SELECT SUM(Price*Quantity) as Total,CodGrupo = CAST(T1.[ItmsGrpCod] AS char), T0.BaseEntry
FROM IGE1 T0
INNER JOIN OITM T1 ON T0.[ItemCode] = T1.[ItemCode]
WHERE T1.[ItmsGrpCod] = 162 OR T1.[ItmsGrpCod] =164 OR T1.[ItmsGrpCod] = 167
GROUP BY T0.BaseEntry,T1.[ItmsGrpCod]
ORDER BY T0.BaseEntry, CodGrupo
En la segunda Consulta tambien deberias aplicar el SUM y el GROUP BY , pero te lo dejo de tarea jejeje…
Exactamente estaba buscando algo asi Gabriel pero no me funcionaba el grop by deja checar tu codigo que es exactamente loq eu requiero tanto en la tabla de la partida presupuestaria como en la de las ordenes de fabricacion si tienes algo de material relacionado te lo agradeceria mucho, una duda mas al agregar datos de las dos tablas no se me repetiran? ya que tendria que usar un grupo para que cambiara de pagina o deja intentar y si surge algun problema te molesto de nuevo gabriel, muchas gracias
Actualizacion: ya pude hacer el grupo de lo proyectado ya pude entender mi error en el order bye, yo pensaba sap no lo permitia pero era que tenia que indicar el campo de la tabla se agregara en el select al usarlo en el group by, me queda el query asi
SELECT T0.[U_Proyecto] , T0.[U_DescripProyecto], T1.[U_OF], T1.[U_GpoArticulo], SUM(T1.[U_Monto]) AS TOTAL
FROM [dbo].[@PRESUPUESTO_ENC] T0
INNER JOIN [dbo].[@PRESUPUESTO_DET] T1 ON T0.DocEntry = T1.DocEntry
WHERE T1.[U_OF] >0 and T1.[U_GpoArticulo] <> ''
GROUP BY T1.[U_OF], T1.[U_GpoArticulo], T0.[U_DescripProyecto], T0.[U_Proyecto]
ORDER BY T0.[U_Proyecto], T1.[U_OF], T1.[U_GpoArticulo]
y el resultado de la tabla me queda ya correcto asi, ya con eso puedo hacer la grafica espero no atorarme en algo mas muchas gracias gabriel que ya estaba ciclado
Código de Proyecto Descripción de Proyecto Orden de Fabricación Grupo de Artículo TOTAL
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 4 162 15,142.3900
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 4 164 4,567.8500
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 4 167 902.7900
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 4 GTO 1,722.8600
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 4 MOD 1,809.1900
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 7 162 12,053.2400
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 7 164 17,953.5600
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 7 167 532.9000
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 7 GTO 1,300.3600
OP16002 OP16002 AMPLIACIÓN DEL SISTEMA EXISTENTE GE-HARRIS S.E. PRIMERO DE MAYO (SESELEC) 7 MOD 25,677.0800
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 4 162 3,493.4300
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 4 164 164.0000
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 4 167 292.8100
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 4 GTO 54.3500
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 4 MOD 635.8700
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 6 162 3,748.0500
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 6 164 164.0000
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 6 167 38.1900
OS16002 OS16002 SISTEMA DE VARIADOR 75 HP (EQUIPO JEREZ) 6 MOD 635.8700