Hola, necesito ayuda para entender la parte de decodificación de una consulta que es algo como lo siguiente.PEDIDO POR DECODIFICAR (BLAH, [COLUMN NUMBER]) en una consulta de columna única. ¿Como funciona?
SELECT ax.animal_code
FROM raw_animal_xref ax,
animal_xref_type axt
WHERE ax.animal_mnemonic = l_animal_mnemonic -- Example 'COUGAR'
AND ax.animal_code_type = axt.animal_code_type
ORDER BY DECODE (animal_type,
l_type_to_be_matched, -1, -- Example 'CATS'
l_current_type, 0, -- Example 'BIG CATS'
nvl(axt.type_search_priority, 100)) ASC; -- EXAMPLE 'Big Cats' Priority is 1
Desde esta consulta devuelve sólo 1 consulta, estoy un poco perplejo sobre cómo el ORDER BY trabajos con los diferentes números de columna no existentes suministrados por DECODE. La consulta funciona como un cursor para encontrar un código único para el animal en cuestión, dado un animal mnemotécnico, el tipo de animal actual y el tipo con el que se emparejará.
Estoy pensando que DECODE devuelve los diferentes números de columna a ORDER BY y traté de experimentar con una columna simple diferente selecciona en otras tablas con ORDER por '-1', '0' y '100' y el ORDEN parece fallar para 0 y 100. ¿Por qué funciona con -1 o con cualquiera de los otros números?
Espero que alguien pueda explicarme esto. ¡Gracias!
¡Gracias por responder! Entonces, si la fila actual es un COUGAR IE BIG CAT, se establecerá en 0, que siempre se colocará en la 2ª fila y cuando me encuentre con una fila "Domestic Cat", tipo "CAT", será establecido como -1 IE, estará en la parte superior de mi conjunto. Y si estoy en una fila que no tiene ningún search_priority, estará en la parte inferior de la lista IE 100. ¿Es correcto mi entendimiento? – Azeworai
sí, esa es la idea. Aquí hay otra publicación que describe hacer lo mismo: http://www.orindasoft.com/public/blog/2007/07/oracles-decode-funtion.html –