sql >> Base de Datos >  >> RDS >> Oracle

¿Cómo puedo realizar un SELECT DISTINCT en todos los campos excepto un BLOB?

SELECT DISTINCT MOVIES.TITLE, CERTIFICATIONS.ID, PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS
FROM [...]

Distinto se aplica a todas las columnas de la lista SELECCIONAR. Y sí, no puede usar LOB en GROUP BY, UNION, DISTINCT, etc. porque Oracle no sabe cómo comparar diferentes LOB

Si también desea recuperar BLOB, puede intentar algo como esto:

SELECT MOVIES.TITLE, CERTIFICATIONS.ID, 
       PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS, IMAGES.IMAGE
FROM (     
  SELECT MOVIES.TITLE, CERTIFICATIONS.ID, 
         PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS, IMAGES.IMAGE,
         row_number() over (partition by MOVIES.TITLE, CERTIFICATIONS.ID, PROJECTION.DAY, TIME_SLOTS.SLOT, PROJECTION.REMAINING_SEATS 
                            order by PROJECTION.DAY, TIME_SLOTS.SLOT) RW
  FROM [...]
) WHERE RW = 1;  

Pero debes entender lo que estás buscando. Por ejemplo, la consulta anterior agrupa todas las columnas excepto una columna BLOB, las ordena por unas dos columnas y asigna un número de fila a cada fila del grupo. La consulta resultante recupera solo la primera fila de cada grupo