SQL - extraer periodos aaamm no pagados en estado de cuenta

 
Vista:

extraer periodos aaamm no pagados en estado de cuenta

Publicado por marquita (3 intervenciones) el 17/04/2018 23:56:55
tengo una tabla que guarda todos los abonos recibidos y aplicados a un periodo bajo el formato aaaamm, necesito extraer los periodos que NO han recibido abonos...para obtener la mora de la cuenta. los campos que guarda la tabla son: id_cuenta, i8_periodo, fecha recibido, y los valores por cada cargo....mi aplicacion esta generando muchos errores por eso debo extraer la informacion desde la bd...gracias de antemano
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

extraer periodos aaamm no pagados en estado de cuenta

Publicado por leonardo_josue (1173 intervenciones) el 18/04/2018 16:14:53
Hola Marquita:

no me queda claro qué es lo que quieres hacer... ¿podrías poner algunos datos de ejemplo de tus tablas y a partir de esos datos decirnos qué es lo que esperas obtener como salida? así será más factible que podamos ayudarte.

Saludos
Leo.
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

extraer periodos aaamm no pagados en estado de cuenta

Publicado por Valeria (3 intervenciones) el 19/04/2018 05:10:49
Los campos de la tabla son: ID, periodo, tasa 1, tasa 2, tasa3, fecha_pag (donde ID es el número de cuenta, periodo es el mes que paga, y las tasas son los cargos mensuales)
Necesito aquellos períodos que no han sido pagados por ejemplo tengo los registros:
10010025; 201702; 525.50;300.75; 100; 2017-02-28
10010025; 201703; 525.50;300.75; 100; 2017-02-28
10010025; 201709; 525.50;300.75; 100; 2017-02-28

Aquí debo obtener los meses de 201704 hasta 201708 por que son los adeudados
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

extraer periodos aaamm no pagados en estado de cuenta

Publicado por leonardo_josue (1173 intervenciones) el 19/04/2018 16:06:53
Hola de nuevo Marquita y/o valeria:

Las bases de Datos sólo puede consultar información que exista en la misma base de datos, es decir no puede "inventar" información... en este caso, eso quiere decir que de alguna manera debes de tener TODOS LOS PERIODOS QUE TE INTERESAN en la misma BD's, ya sea en una tabla física o al menos en una tabla "virtual" temporal... es decir, puedes crear una tabla física así:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
mysql> SELECT * FROM periodos;
+------------+---------+
| id_periodo | periodo |
+------------+---------+
|          1 |  201702 |
|          2 |  201703 |
|          3 |  201704 |
|          4 |  201705 |
|          5 |  201706 |
|          6 |  201707 |
|          7 |  201708 |
|          8 |  201709 |
+------------+---------+
8 rows in set (0.00 sec)

De tal suerte, que puedas hacer un LEFT JOIN para obtener los periodos que te interesan;

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mysql> SELECT * FROM tabla;
+----------+---------+---------+---------+---------+------------+
| id       | periodo | tasa_1  | tasa_2  | tasa3   | fecha_pag  |
+----------+---------+---------+---------+---------+------------+
| 10010025 |  201702 | 525.500 | 300.750 | 100.000 | 2017-02-28 |
| 10010025 |  201703 | 525.500 | 300.750 | 100.000 | 2017-02-28 |
| 10010025 |  201709 | 525.500 | 300.750 | 100.000 | 2017-02-28 |
+----------+---------+---------+---------+---------+------------+
3 rows in set (0.00 sec)
 
mysql> SELECT periodos.periodo
    -> FROM periodos
    -> LEFT JOIN tabla ON tabla.periodo = periodos.periodo
    -> WHERE tabla.id IS NULL;
+---------+
| periodo |
+---------+
|  201704 |
|  201705 |
|  201706 |
|  201707 |
|  201708 |
+---------+
5 rows in set (0.00 sec)

O si no quieres crear la tabla física, puedes crear una tabla "virtual temporal"... En MySQL por ejemplo lo podrías hacer así:

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
mysql> SELECT periodos.periodo FROM
    -> ( SELECT 201702 periodo
    ->   UNION
    ->   SELECT 201703 periodo
    ->   UNION
    ->   SELECT 201704 periodo
    ->   UNION
    ->   SELECT 201705 periodo
    ->   UNION
    ->   SELECT 201706 periodo
    ->   UNION
    ->   SELECT 201707 periodo
    ->   UNION
    ->   SELECT 201708 periodo
    ->   UNION
    ->   SELECT 201709 periodo) periodos
    -> LEFT JOIN tabla ON tabla.periodo = periodos.periodo
    -> WHERE tabla.id IS NULL;
+---------+
| periodo |
+---------+
|  201704 |
|  201705 |
|  201706 |
|  201707 |
|  201708 |
+---------+
5 rows in set (0.00 sec)

Haz la prueba y nos comentas.

Saludos
Leo.
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

extraer periodos aaamm no pagados en estado de cuenta

Publicado por Valeria (3 intervenciones) el 20/04/2018 00:07:27
casi no te entiendo, mira la tabla se llama : sdd_abono_inmueble, tiene los campos:
i8_periodo, i8_cuenta, dt_abono, d82_abono,
si hago un select par una cuenta cualquiera obtengo:

10000003 200609 16/10/2007 1.03
10000003 200611 16/9/2009 1.03
10000003 200612 19/10/2009 0.05
10000003 200703 17/11/2009 1.03

necesito obtener lo siguiente:

10000003 200610 1.03
10000003 200701 1.03
10000003 200702 1.03


agradezco tu ayuda
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: 806
Bronce
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

extraer periodos aaamm no pagados en estado de cuenta

Publicado por leonardo_josue (1173 intervenciones) el 20/04/2018 16:20:47
Hola valeria:

Resumiendo,

1. primero necesitas una tabla que contenga todos los periodos que te interesa consultar, estos periodos los puedes tener en una tabla física o simularlos con un SELECT para tenerlos en una tabla "virtual"

2. Una vez que tengas la tabla, haces un LEFT JOIN sobre tu tabla original.

No creo que sea muy complicado entender esto.

Saludos
Leo.
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