I have the following query:
(SELECT sno_hpersonalnomina.codnom, count(distinct(sno_hpersonalnomina.codper)), trunc(cast(sum(ABS(sno_hsalida.valsal)) as numeric), 2) as asigna
from sno_hpersonalnomina
inner JOIN sno_hsalida ON sno_hpersonalnomina.codnom = sno_hsalida.codnom
AND sno_hpersonalnomina.codper = sno_hsalida.codper
and sno_hpersonalnomina.codperi= sno_hsalida.codperi
where sno_hpersonalnomina.codper::int= 116052 and sno_hpersonalnomina.codperi::int= 019
and sno_hpersonalnomina.codnom::integer <= 8 and sno_hpersonalnomina.staper::int=1 and sno_hsalida.tipsal='A'
group by sno_hpersonalnomina.codnom)
UNION all
(SELECT sno_hpersonalnomina.codnom, count(distinct(sno_hpersonalnomina.codper)), trunc(cast(sum(ABS(sno_hsalida.valsal)) as numeric), 2) as deducciones
from sno_hpersonalnomina
inner JOIN sno_hsalida ON sno_hpersonalnomina.codnom = sno_hsalida.codnom
AND sno_hpersonalnomina.codper = sno_hsalida.codper
and sno_hpersonalnomina.codperi= sno_hsalida.codperi
where sno_hpersonalnomina.codper::int= 116052 and sno_hpersonalnomina.codperi::int= 019
and sno_hpersonalnomina.codnom::integer <= 8 and sno_hpersonalnomina.staper::int=1 and (sno_hsalida.tipsal='D' or sno_hsalida.tipsal='P1')
group by sno_hpersonalnomina.codnom)
Result
codnom TRABAJADORES ASIGNACIONES
-----------------------------------
0001 1 193397.27
0001 1 24831.02
But the problem is that the tipsal field has value A for assignments and for deductions has value P1 and D.
How do I translate this into the query?
This is the result of what is required
codnom TRABAJADORES ASIGNACIONES DEDUCCIONES TOTAL_NETO
---------------------------------------------------------
1 20 200000 100000 100000
2 10 150000 50000 100000