miércoles, 9 de noviembre de 2016

COLUMNAS FICTICIAS Y LAS FUNCIONES DE CONVERSIÓN


Como las expresiones de las listas SELECT de las consultas deben corresponder en número, puede utilizar columnas ficticias y las funciones de conversión de tipo de datos para cumplir esta regla. En la diapositiva, se proporciona el nombre location como cabecera de columna ficticia. Se utiliza la función TO_NUMBER de la primera consulta para hacerla corresponder con el tipo de datos NUMBER de la columna LOCATION_ID recuperada por la segunda consulta. De forma parecida, se utiliza la función TO_DATE de la segunda consulta para hacerla corresponder con el tipo de datos NUMBER de la columna LOCATION_ID recuperada por la primera consulta. 

Mediante el operador UNION, muestre el identificador de departamento, la ubicación y la fecha de contratación de todos los empleados. 

Ejemplo:
SELECT department_id, TO_NUMBER(null),location, hire_date 
   FROM   employees 
UNION 
SELECT department_id, location_id,  TO_DATE(null) 
   FROM   departments;


Las tablas EMPLOYEES y JOB_HISTORY tienen varias columnas en común (por ejemplo, EMPLOYEE_ID, JOB_ID y DEPARTMENT_ID). Pero ¿y si desea que la consulta muestre el identificador de empleado, el de puesto y el salario mediante el operador UNION, sabiendo que el salario existe sólo en la tabla EMPLOYEES? 

EL código de ejemplo de la diapositiva hace corresponder las columnas EMPLOYEE_ID y JOB_ID de las tablas EMPLOYEES y JOB_HISTORY. Se agrega un valor de literal de 0 a la sentencia SELECT de JOB_HISTORY para que corresponda con la columna numérica SALARY de la sentencia SELECT de EMPLOYEES. 

En el resultado anterior, cada fila de la salida que se corresponde con un registro de la tabla JOB_HISTORY contiene un 0 en la columna SALARY. 

SELECT employee_id, job_id,salary 
   FROM  employees 
UNION 
SELECT employee_id, job_id,0 
   FROM  job_history; 


Control del Orden de Filas 
Por defecto, la salida se clasifica por orden ascendente de la primera columna. Puede utilizar la cláusula ORDER BY para cambiar esto. 

La cláusula ORDER BY sólo se puede utilizar una vez en una consulta compuesta. Si se utiliza, la cláusula ORDER BY se debe colocar al final de la consulta. La cláusula ORDER BY acepta el nombre de columna o un alias. Sin la cláusula ORDER BY, el código de ejemplo de la diapositiva genera la siguiente salida por orden alfabético de la primera columna: 

Nota: Piense en una consulta compuesta en la que se utilice el operador SET UNION más de una vez. En este caso, la cláusula ORDER BY sólo puede utilizar posiciones y no expresiones explícitas.
Comando COLUMN de iSQL*Plus 
Puede utilizar el comando COLUMN de iSQL*Plus para personalizar las cabeceras de columna. 

Genere una frase en inglés mediante dos operadores UNION. 

COLUMN a_dummy NOPRINT 
SELECT 'sing' AS "My dream", 3 a_dummy 
FROM dual 
UNION 
SELECT 'I''d like to teach', 1 a_dummy 
FROM dual 
UNION  
SELECT 'the world to', 2 a_dummy 
FROM dual 
ORDER BY a_dummy;



Sintaxis
  • COL[UMN] [{column|alias} [option]] 
  • Donde OPTION es: 
  • CLE[AR]: Limpia cualquier formato de columna 
  • HEA[DING] text: Define la cabecera de columna  
  • FOR[MAT] format: Cambia la visualización de la columna mediante un modelo de formato 
  • NOPRINT | PRINT: Suprime o muestra la cabecera y los datos de columna 
  • NULL 


Las siguiente sentencia suprime los datos de columna y la cabecera de título para la columna denominada A_DUMMY. Observe que la primera cláusula SELECT de la diapositiva anterior crea una columna ficticia denominada A_DUMMY.  
COLUMN a_dummy NOPRINT 




Share:

0 comentarios:

Publicar un comentario

Archivo

Cual es el tema de mayor interes para ti?