Hola,
decode es una función parecida al if.
Funciona de la siguiente manera :
DECODE(<expresion a evaluar>, <valor1>,<retorno1>,<valor2>,<retorno2>, ..., <retorno_por_defecto>)
Vamos por pasos, tu consulta un poco simplificada:
SELECT TEMA,EJEMPLARES,
DECODE(EJEMPLARES,
7, 'EL VALOR DEL CAMPO EJEMPLARES ES 7 '
,'EL VALOR DEL CAMPO EJEMPLARES NO ES 7 ')
Cuando ejecutes este SELECT te devolverá "EL VALOR DEL CAMPO EJEMPLARES ES 7" cuando EJEMPLARES = 7 y el literal 'EL VALOR DEL CAMPO EJEMPLARES NO ES 7 ' cuando EJEMPLARES se diferente de 7.
De esta manera tu select:
SELECT TEMA,EJEMPLARES,
DECODE(EJEMPLARES,
7, DECODE(TEMA,'SEVEN','TEMA',TEMA)
)
Si ejemplares = 7 , entonces: si tema = 'SEVEN' devuelve el literal "TEMA", y el valor del campo TEMA cuando tema <> 'SEVEN'.
Si ejemplares <> 7 devuelve null, ya que no especificas valor por defecto.
Saludos,
DJK