Buen Dia Srs.
tengo el siguiente script en PL-SQL, es una vista que quiero desarrollar para poder visualizar el nombre del contratista que realiza una tarea asignada y tambien sino tiene un contratista asignado asigne NULL o vacio, el script ke tengo es este:
SELECT DISTINCT A.COD_PROYECTO, A.COD_MODELO, A.COD_LOTE, A.COD_ACTIVIDAD, A.COD_ACTIVIDAD_AV, A.DES_ACTIVIDAD_AV,
(CASE WHEN (A.COD_ACTIVIDAD_AV = B.COD_ACTIVIDAD_AV) THEN B.NOM_PERSONA ELSE '' END) AS NOM_CONTRATISTA
FROM activ_avance A, VISTA_PAGO_ACT_CONTRATISTAS B
WHERE A.COD_PROYECTO = B.COD_PROYECTO
AND A.COD_MODELO = B.COD_MODELO
AND A.COD_LOTE = B.COD_LOTE
AND A.COD_PROYECTO = '1'
AND A.COD_MODELO = '8'
AND A.COD_LOTE = '86'
GROUP BY A.COD_PROYECTO, A.COD_MODELO, A.COD_LOTE, A.COD_ACTIVIDAD, A.COD_ACTIVIDAD_AV, B.COD_ACTIVIDAD_AV, A.DES_ACTIVIDAD_AV, B.NOM_PERSONA
ORDER BY A.COD_PROYECTO, A.COD_MODELO, A.COD_LOTE, A.COD_ACTIVIDAD,A.COD_ACTIVIDAD_AV
el script funciona, pero pasa algo raro en el CASE, se supone que el debe comparar si tal codigo ya esta en la otra tabla si es asi solo debe poner el contratista que tiene esa semejanza, si no debe poner vacio, lo ke pasa es que me duplica esa informacion, es decir me dice el cod y el nombre, pero me repite el mismo cod de tare pero con nombre NULL.
127 1 8 86 38 2540 FONTANERIA 2DO NIVEL
128 1 8 86 39 2560 GRADAS
129 1 8 86 39 2580 PARED DE BLOQUE 4" JUAN CARLOS ORTEGA PAGOAGA
130 1 8 86 39 2580 PARED DE BLOQUE 4"
131 1 8 86 39 2600 REPELLO DE MOCHETA JUAN CARLOS ORTEGA PAGOAGA
132 1 8 86 39 2600 REPELLO DE MOCHETA
133 1 8 86 39 2620 M.O. LOSA DE GRADAS JUAN CARLOS ORTEGA PAGOAGA
134 1 8 86 39 2620 M.O. LOSA DE GRADAS
espero alguien me ayude con esto.. buen dia