[SQL(2005/2008)-UNPIVOT] Normalización de Datos con UNPIVOT.


Saludos nuevamente amigos, leyendo nuevamente sobre TSQL, me encontré el tema de Normalización de datos con la clausula UNPIVOT.

El comando UNPIVOT hace lo contrario de PIVOT cambiando columnas en filas, utilizando la misma sintaxis que PIVOT.

Nota: Este ejemplo funciona en SQL 2008 y 2005.

Este ejemplo demuestra cómo UNPIVOT se puede utilizar para eliminar la repetición de grupos de columna, a menudo visto en tablas no normalizadas.

1. Creamos una tabla no normalizada con la repetición de la columna de Idioma:

CREATE TABLE dbo.TraductorIdioma
(IdTraductor INT NOT NULL,
Idioma1 VARCHAR(50),
Idioma2 VARCHAR(50),
Idioma3 VARCHAR(50))
GO

2. Insertamos datos en la tabla.

INSERT dbo.TraductorIdioma(IdTraductor, Idioma1, Idioma2, Idioma3)
VALUES( 1, 'Español', 'Inglés', 'Alemán')
INSERT dbo.TraductorIdioma(IdTraductor, Idioma1, Idioma2, Idioma3)
VALUES( 2, 'Español', 'Portugués', 'Francés')
INSERT dbo.TraductorIdioma(IdTraductor, Idioma1, Idioma2, Idioma3)
VALUES( 3, 'Español', NULL, NULL)
GO

3. Realizamos un SELECT normal (Resultado no normalizado).

image

4. Por último aplicamos un UNPIVOT para normalizar la información en nuestro SELECT.

SELECT IdTraductor,
TipoIdioma,
Idioma
FROM
(SELECT IdTraductor, Idioma1, Idioma2, Idioma3
FROM dbo.TraductorIdioma) c
UNPIVOT
(Idioma FOR TipoIdioma IN ([Idioma1], [Idioma2], [Idioma3])
) AS p

Resultado (Normalizado).

image

Espero les sea de ayuda, dejen comentarios.

Etiquetas de Technorati: ,,
  1. interesante

    estoy buscando un post en tublog pero no encontre algo que estoy seguro vi aca

    era sobre cargar un txt a una base de datos con sentencias sql
    en donde se indique como vi en el post

    numero de max errores permitidos
    separadores

    algo asi

    salduos

  2. Necesito comprar licencia de sql 2008 donde puedo adquirir licencia gracias por su coloboracion y precio

    • psykrest
    • 17/08/09

    Saludos, te dejo un enlace en el cual podras encontrar la lista de precios (Pricing) de SQL Server y ver opciones de compra para la Licencia (Purchase Options).
    http://www.microsoft.com/sqlserver/2008/en/us/pricing.aspx

    • Cesar Villamil
    • 18/02/10

    Sencillo pero muy buen ejemplo, gracias

    • isac
    • 8/05/14

    gracias

    • Juano
    • 6/03/15

    Buen Trabajo

  1. No trackbacks yet.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: