Tema 7. Tablas de referencias
cruzadas (II) |
|
|
Como hemos dicho las columnas dinámicas son las
que se generan según los valores almacenados en la columna pivote
(la que aparece en la cláusula PIVOT),
normalmente se genera una columna dinámica por cada
valor que se encuentre en la columna pivote del origen de datos.
Cuando los posibles valores que puede tomar la columna
pivote son conocidos y queremos definir cuales queremos que aparezcan,
sólo unos cuantos porque no nos interesan algunos o todos incluso
si no generan resultado, en este caso usaremos la cláusula IN,
en la cláusula IN se ponen
entre paréntesis todos los posibles valores, o por lo menos los
que queremos que aparezcan en el resultado.
Por ejemplo sólo nos interesan los meses de febrero,
mayo y diciembre:
|
|
TRANSFORM Sum(importe)
SELECT rep as empleado
FROM pedidos
GROUP BY rep
PIVOT month(fechapedido) IN (2,5,12);
|
 |
|
Si no utilizamos la cláusula IN,
los meses de mayo y septiembre no aparecen ya que no hay pedidos realizados
durante estos meses, si utilizamos la cláusula IN
y definimos los doces valores posibles, sí aparecen las columnas
correspondientes a estos meses y observamos que ningún empleado
tiene ventas en esos mes.
|
|
TRANSFORM Sum(importe)
SELECT rep as empleado
FROM pedidos
GROUP BY rep
PIVOT month(fechapedido) IN (1,2,3,4,5,6,7,8,9,10,11,12);
|
 |
|
La cláusula IN
también sirve para cambiar el orden de aparición de las
columnas dinámicas, las columnas aparecen en el mismo orden en
que aparecen en la cláusula IN.
|
|
TRANSFORM Sum(importe)
SELECT rep as empleado
FROM pedidos
GROUP BY rep
PIVOT month(fechapedido) IN (10,11,12,1,2,3,4,5,6,7,8,9);
|
 |
|
Las columnas fijas son las que aparecen delante de las
columnas dinámicas y son fijas porque se genera una sola columna
en el resultado por cada columna hayamos indicado en la lista de columnas
fijas. Las columnas fijas se indican en la lista de selección de
la sentencia SELECT, una columna fija que siempre debemos incluir es la
que sirve de encabezado de fila para que podamos saber cada fila a qué
valor de encabezado de fila corresponde. Pero además podemos incluir
otras columnas por ejemplo columnas de resumen de cada fila, sin que se
tenga en cuenta la agrupación por la columna pivote.
Por ejemplo queremos saber para cada empleado cuánto
ha vendido en total y cuál ha sido el importe mayor vendido en
un pedido.
|
|
TRANSFORM Sum(importe) AS
Suma
SELECT rep AS empleado, SUM(importe) AS [Total vendido],MAX(importe) AS
mayor
FROM pedidos
GROUP BY rep
PIVOT month(fechapedido) ;
|
 |
|
La instrucción TRANSFORM
se utiliza para definir una consulta de referencias
cruzadas.
Permite presentar los resultados de una sumaria en una
tabla de doble entrada como la que se presenta a continuación:

|
|
Aviso legal: este curso es gratuito
siempre que se visualice desde la página web de aulaClic. No está
permitido descargar el curso ni utilizarlo en academias o centros de enseñanza
privados sin estar conectado a Internet.
|
© aulaClic. Todos los derechos reservados.
Free Computer tutorials .
Prohibida la reproducción por cualquier medio.
Julio-2001.aulaClic.com
|
|
|