
Ayuda en construccion de consulta Postgresql
Publicado por Aldo (1 intervención) el 02/12/2014 01:54:46
Buenas tardes a todos, quisiera pedirles algún consejo para construir una consulta en postgresql. Estoy elaborando una consulta para obtener una lista de registros de detalles de planilla, filtrado por dni de empleado y mas condiciones, lo que quisiera saber es si hay una forma de poder procesar esos resultados, mas o menos de esta manera:

En la imagen q muestro he realizado al consulta y en la ultima fila, hice un calculo de los montos de las final anteriores
Ese fue el codigo q emplee, mi duda ahora es para este caso:

En esta consulta quiero hacer una fila para calcular el valor neto como en el ejemplo anterior, pero agrupandolo por idplanilla, osea que las filas que posean el mismo idplanilla se procesen y generen una fila resultado, y asi para cada idplanilla distinto.
Espero que puedan darme alguna pista de como hacerlo o quizas no se pueda hacer, gracias por su apoyo.

En la imagen q muestro he realizado al consulta y en la ultima fila, hice un calculo de los montos de las final anteriores
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
(SELECT DISTINCT
tipodocidentidad.idtipodocidentidad,
personal.dni,
case planillapersonal.rubrofinanciamiento when '' then '' else '00' end as rubrofinanc,
conceptotipo.idconceptotipo,
substr(rubrosplanilla.idrubroplanilla,5) as rubroplanilla,
concepto.nombre,
planilladetalle.monto
FROM
public.tipodocidentidad,
rrhh.planilla,
rrhh.planilladetalle,
rrhh.planillapersonal,
rrhh.personal,
rrhh.concepto,
rrhh.conceptotipo,
rrhh.rubrosplanilla
WHERE
tipodocidentidad.idtipodocidentidad = personal.idtipodocidentidad AND
concepto.idconceptotipo = conceptotipo.idconceptotipo AND
planilladetalle.idconcepto = concepto.idconcepto AND
planilla.idplanilla = planilladetalle.idplanilla AND
planilladetalle.idplanilla = planillapersonal.idplanilla AND
planilladetalle.dni = personal.dni AND
planillapersonal.dni = personal.dni AND
rubrosplanilla.idconcepto = concepto.idconcepto AND
rubrosplanilla.idrubroplanilla = planilladetalle.idrubroplanilla AND
planilla.anio= '2014' AND
planilla.mes = 1 AND
personal.dni = '02683919'
ORDER BY
personal.dni ASC)
UNION ALL
(SELECT DISTINCT
tipodocidentidad.idtipodocidentidad,
personal.dni,
case planillapersonal.rubrofinanciamiento when '' then '' else '00' end as rubrofinanc,
9,
'9999',
'NETO',
SUMANDO-RESTO AS MONTO
FROM
public.tipodocidentidad,
rrhh.planilla,
rrhh.planilladetalle,
rrhh.planillapersonal,
rrhh.personal,
rrhh.concepto,
rrhh.conceptotipo,
rrhh.rubrosplanilla,
(SELECT SUM(planilladetalle.monto) as SUMANDO
FROM
public.tipodocidentidad,
rrhh.planilla,
rrhh.planilladetalle,
rrhh.planillapersonal,
rrhh.personal,
rrhh.concepto,
rrhh.rubrosplanilla,
rrhh.conceptotipo
WHERE
tipodocidentidad.idtipodocidentidad = personal.idtipodocidentidad AND
concepto.idconceptotipo = conceptotipo.idconceptotipo AND
planilladetalle.idconcepto = concepto.idconcepto AND
planilla.idplanilla = planilladetalle.idplanilla AND
planilladetalle.idplanilla = planillapersonal.idplanilla AND
planilladetalle.dni = personal.dni AND
planillapersonal.dni = personal.dni AND
rubrosplanilla.idconcepto = concepto.idconcepto AND
rubrosplanilla.idrubroplanilla = planilladetalle.idrubroplanilla AND
planilla.anio= '2014' AND
planilla.mes = 1 AND
personal.dni = '02683919' AND
conceptotipo.idconceptotipo = 1) AS RESULTADO1,
(SELECT SUM(planilladetalle.monto) as RESTO
FROM
public.tipodocidentidad,
rrhh.planilla,
rrhh.planilladetalle,
rrhh.planillapersonal,
rrhh.personal,
rrhh.concepto,
rrhh.rubrosplanilla,
rrhh.conceptotipo
WHERE
tipodocidentidad.idtipodocidentidad = personal.idtipodocidentidad AND
concepto.idconceptotipo = conceptotipo.idconceptotipo AND
planilladetalle.idconcepto = concepto.idconcepto AND
planilla.idplanilla = planilladetalle.idplanilla AND
planilladetalle.idplanilla = planillapersonal.idplanilla AND
planilladetalle.dni = personal.dni AND
planillapersonal.dni = personal.dni AND
rubrosplanilla.idconcepto = concepto.idconcepto AND
rubrosplanilla.idrubroplanilla = planilladetalle.idrubroplanilla AND
planilla.anio= '2014' AND
planilla.mes = 1 AND
personal.dni = '02683919' AND
conceptotipo.idconceptotipo = 2) AS RESULTADO
WHERE
tipodocidentidad.idtipodocidentidad = personal.idtipodocidentidad AND
concepto.idconceptotipo = conceptotipo.idconceptotipo AND
planilladetalle.idconcepto = concepto.idconcepto AND
planilla.idplanilla = planilladetalle.idplanilla AND
planilladetalle.idplanilla = planillapersonal.idplanilla AND
planilladetalle.dni = personal.dni AND
planillapersonal.dni = personal.dni AND
rubrosplanilla.idconcepto = concepto.idconcepto AND
rubrosplanilla.idrubroplanilla = planilladetalle.idrubroplanilla AND
planilla.anio= '2014' AND
planilla.mes = 1 AND
personal.dni = '02683919'
GROUP BY
tipodocidentidad.idtipodocidentidad,
personal.dni,
rubrofinanc,
resultado.resto,
resultado1.sumando
LIMIT 1)
Ese fue el codigo q emplee, mi duda ahora es para este caso:

En esta consulta quiero hacer una fila para calcular el valor neto como en el ejemplo anterior, pero agrupandolo por idplanilla, osea que las filas que posean el mismo idplanilla se procesen y generen una fila resultado, y asi para cada idplanilla distinto.
Espero que puedan darme alguna pista de como hacerlo o quizas no se pueda hacer, gracias por su apoyo.
Valora esta pregunta


0