Estoy escribiendo una consulta SQL que devuelve una lista de los centros de costos que están cerrados. Esto se conoce por una 'C' en la columna TE_INACTIVE.

El problema: algunos centros de costos se trasladaron a una compañía diferente, por lo que hay un duplicado de 3 centros de costos que están cerrados y abiertos. Como este centro de costos se cerró y volvió a abrir, ya no quiero leerlo ya que el nuevo no tiene una 'C'. ¿Cómo puedo hacer esto?

En otras palabras, si uno de los Centros de Costos duplicados no tiene una 'C', entonces quiero omitirlo.

Aquí está (parte de) mi consulta original y una captura de pantalla de lo que quiero decir.

select distinct TE_COST_CENTER, TE_INACTIVE from ABCS_TABLE_E where 
TE_COST_CENTER = '38M'

Haga clic aquí para ver la imagen!

0
Keyur Vaidya 29 sep. 2017 a las 23:37

2 respuestas

Puede usar la subconsulta para seleccionar los centros de costos que se han cerrado 'C'. no se seleccionará ningún registro de ese centro de costo.

SELECT TE_COST_CENTER, 
       TE_INACTIVE
  FROM ABCS_TABLE_E
 WHERE TE_COST_CENTER NOT IN (SELECT TE_COST_CENTER
                                FROM ABCS_TABLE_E
                               WHERE TE_INACTIVE = 'C')
-1
Ferdinand Gaspar 29 sep. 2017 a las 20:58

Aquí tiene:

SELECT TE_COST_CENTER, TE_INACTIVE
FROM ABCS_TABLE_E
WHERE TE_CO NOT IN (SELECT TE_CO FROM ABCS_TABLE_E WHERE TE_INACTIVE = 'C');
0
Ilyes 29 sep. 2017 a las 21:03