FoxPro/Visual FoxPro - FOX Comparar campos de diferentes tablas y agruparlos

 
Vista:
Imágen de perfil de nancy
Val: 15
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

FOX Comparar campos de diferentes tablas y agruparlos

Publicado por nancy (8 intervenciones) el 16/11/2016 20:25:14
Hola a todos, agradeciendo de su apoyo con la siguiente duda: Tengo dos tablas diferentes, ambas tienen 4 campos Id_control (llave primaria), id_grupo, Descgru_id,Monto, en el campo id_grupo se pueden repetir n veces un código de proyecto, y en Monto puede cambiar diariamente. Lo que debo de buscar es que al comparar el id_grupo y el Monto correspondiente del corte del día con el corte de un día anterior, y poder visualizar la diferencia que tuvo el campo de Monto, y agrupar esos resultados conforme al id_grupo. Estoy trabajando con la Versión FoxPro9.0

Pondre un ejemplo, para ser algo mas clara.

Corte dia 15/11/2016 - Corte dia 16/11/2016

id_control | id_grupo | descgru_id | monto - id_control | id_grupo | descgru_id | monto
1 | D-01 | Proyecto1 | 10000 - 1 | D-01 | Proyecto1 | 20000
2 | D-010 | Proyecto2 | 15000 - 2 | D-010 | Proyecto2 | 40000
3 | C-01 | Proyecto3 | 20000 - 3 | C-01 | Proyecto3 | 25000
4 | C-01 | Proyecto4 | 20000 - 4 | C-01 | Proyecto4 | 20000
5 | C-01 | Proyecto5 | 10000 - 5 | C-01 | Proyecto5 | 15000
6 | A-01 | Proyecto 6 |30000 - 6 | A-01 | Proyecto 6 |50000
- 7 | E-01 | Proyecto7 | 70000

Se puede apreciar que algunos montos cambian, entonces debo de saber la diferencia que hubo en cada Id_grupo, pero como son muchos registros me piden que agrupe las diferencias por Id_grupo, que haciendo los calculos manualmente de este ejemplo seria:

id_control | id_grupo | diferencia
1 | D-01 | 10000
2 | D-010 | 25000
3 | C-01 | 10000
6 | A-01 | 35000
7 | E-01 | 70000


Ejecuto esta sentencia pero no me arroja lo que necesito

SET ENGINEBEHAVIOR 70
SELECT T1.id_grupo,T1.descgru_id,T1.MONTO-T2.MONTO as diferencia FROM Tabla1 T1 INNER JOIN Tabla T2 ON T1.id_control=T2.id_control group by T1.id_grupo

Pero esta consulta no me arroja lo que necesito,
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 8
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

FOX Comparar campos de diferentes tablas y agruparlos

Publicado por Andres (2 intervenciones) el 17/11/2016 05:41:09
Para no complicarte tanto en la consulta puedes programar una funcion para que te arroje el resultado como lo quieres.

No tengo visual foxpro, pero si deseas puedo mandarte como seria en c# o en php
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de nancy
Val: 15
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

FOX Comparar campos de diferentes tablas y agruparlos

Publicado por nancy (8 intervenciones) el 17/11/2016 05:43:28
ok, muchas gracias por tu apoyo y si me pudieses apoyar con el ejemplo en php???

saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 8
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

FOX Comparar campos de diferentes tablas y agruparlos

Publicado por Andres (2 intervenciones) el 18/11/2016 05:07:02
Hola nancy, perdon por el retraso pero no tuve tiempo mas antes, por ahora te doy el sql que no se si te gustara pero funciona, es este, tambien te lo mando en archivo por si acaso

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
SELECT
	C1.id_control AS ID_CONTROL,
	C1.id_grupo AS ID_GRUPO,
	C2.monto-C1.monto AS DIFERENCIA
FROM
	(SELECT
		T1.id_control AS id_control,
		T1.id_grupo AS id_grupo,
		SUM(T1.monto) AS monto
	FROM
		tabla1 T1
	GROUP BY T1.id_grupo) AS C1,
	(SELECT
		T2.id_control AS id_control,
		T2.id_grupo AS id_grupo,
		SUM(T2.monto) AS monto
	FROM
		tabla2 T2
	GROUP BY T2.id_grupo) AS C2
WHERE
	C1.id_grupo=C2.id_grupo
 
UNION
 
SELECT
	C1.id_control AS ID_CONTROL,
	C1.id_grupo AS ID_GRUPO,
	C1.monto AS DIFERENCIA
FROM
	(SELECT
		T1.id_control AS id_control,
		T1.id_grupo AS id_grupo,
		SUM(T1.monto) AS monto
	FROM
		tabla1 T1
	GROUP BY T1.id_grupo) AS C1
WHERE
	C1.id_grupo NOT IN (SELECT
		T2.id_grupo
	FROM
		tabla2 T2
	GROUP BY T2.id_grupo)
 
UNION
 
SELECT
	C1.id_control AS ID_CONTROL,
	C1.id_grupo AS ID_GRUPO,
	C1.monto AS DIFERENCIA
FROM
	(SELECT
		T2.id_control AS id_control,
		T2.id_grupo AS id_grupo,
		SUM(T2.monto) AS monto
	FROM
		tabla2 T2
	GROUP BY T2.id_grupo) AS C1
WHERE
	C1.id_grupo NOT IN (SELECT
		T1.id_grupo
	FROM
		tabla1 T1
	GROUP BY T1.id_grupo)
 
ORDER BY 1

Pero seguro que con alguna variante del join se puede hacer mas corto pero no se usar bien el join aun. este sql esta probado en MySql, pero casi seguro que te funcionara en foxpro, si te da algun error avisas para ver que parte foxpro difiere de MySql en esta consulta. Estaba haciendo el script en php pero igual me salia el codigo largo, haci que preferi mandarte directamente la consulta en sql.

Si te resulta, no olvides marcar como respuesta xfa.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
2
Comentar
Imágen de perfil de nancy
Val: 15
Ha aumentado su posición en 2 puestos en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

FOX Comparar campos de diferentes tablas y agruparlos

Publicado por nancy (8 intervenciones) el 18/11/2016 08:25:47
Gracias por el apoyo, me funciono.

saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Mauricio Antonio
Val: 471
Plata
Ha mantenido su posición en FoxPro/Visual FoxPro (en relación al último mes)
Gráfica de FoxPro/Visual FoxPro

FOX Comparar campos de diferentes tablas y agruparlos

Publicado por Mauricio Antonio (1541 intervenciones) el 18/11/2016 14:01:58
Que bueno, parece que algunas dudas de aca, tienen o el codigo secreto o las tablas son secretas.
Saludos Nancy y buena suerte!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar