SlideShare una empresa de Scribd logo
1 de 11
DAI - Ing. Arturo Rozas Huacho 1
4.1.7.- Tablas Cruzadas
Sistemas de Base de Datos
Para entender el concepto de
tablas cruzadas, veamos el
siguiente ejemplo:
Supongamos que se desea
Analizar las ventas por tipo de
prenda y color.
En un proceso previo se obtuvo
la siguiente tabla.
Prenda Color Cantidad
Camisa Blanco 5
Camisa Oscuro 13
Camisa Pastel 12
Chompa Blanco 6
Chompa Claro 9
Chompa Oscuro 11
Chompa Pastel 2
Pantalon Claro 1
Pantalon Oscuro 21
Pantalon Pastel 7
Polo Blanco 3
Polo Claro 8
Polo Oscuro 1
CrossTable1
DAI - Ing. Arturo Rozas Huacho 2
4.1.7.- Tablas Cruzadas
Sistemas de Base de Datos
Prenda Color Cantidad
Camisa Blanco 5
Camisa Oscuro 13
Camisa Pastel 12
Chompa Blanco 6
Chompa Claro 9
Chompa Oscuro 11
Chompa Pastel 2
Pantalon Claro 1
Pantalon Oscuro 21
Pantalon Pastel 7
Polo Blanco 3
Polo Claro 8
Polo Oscuro 1
CrossTable1
Atributos de Medición
Atributos de Dimensión
DAI - Ing. Arturo Rozas Huacho 3
4.1.7.- Tablas Cruzadas
Sistemas de Base de Datos
Prenda Color Cantidad
Camisa Blanco 5
Camisa Oscuro 13
Camisa Pastel 12
Chompa Blanco 6
Chompa Claro 9
Chompa Oscuro 11
Chompa Pastel 2
Pantalon Claro 1
Pantalon Oscuro 21
Pantalon Pastel 7
Polo Blanco 3
Polo Claro 8
Polo Oscuro 1
CrossTable1
Prenda Blanco Claro Oscuro Pastel
Camisa 5 0 13 12
Chompa 6 9 11 2
Pantalon 0 1 21 7
Polo 3 8 1 0
Los valores del atributo de la dimensión Color se utilizan como
columnas en la nueva tabla.
Este tipo de resúmenes es el primer nivel de análisis de la
información y es una necesidad frecuente en el apoyo a la
toma de decisiones.
DAI - Ing. Arturo Rozas Huacho 4
4.1.7.- Tablas Cruzadas…
Sistemas de Base de Datos
Paso 1.- Supongamos que ya se tiene la siguiente tabla:
CrossTable1 (Prenda, Color, Cantidad)
A partir de ésta, generar una tabla temporal con
las siguientes Columnas:
Resultado(Prenda, Blanco, Claro, Oscuro)
select Prenda,
"Blanco" = case when Color = 'Blanco' then Cantidad else 0 end,
"Claro" = case when Color = 'Claro' then Cantidad else 0 end,
"Oscuro" = case when Color = 'Oscuro' then Cantidad else 0 end
into #Prenda
from CrossTable1
DAI - Ing. Arturo Rozas Huacho 5
4.1.7.- Tablas Cruzadas…
Sistemas de Base de Datos
select Prenda,
"Blanco" = case when Color = 'Blanco' then Cantidad else 0 end,
"Claro" = case when Color = 'Claro' then Cantidad else 0 end,
"Oscuro" = case when Color = 'Oscuro' then Cantidad else 0 end
into #Prenda
from CrossTable1
Prenda Color Cantidad
Camisa Blanco 5
Camisa Oscuro 13
Camisa Pastel 12
Chompa Blanco 6
Chompa Claro 9
Chompa Oscuro 11
Chompa Pastel 2
Pantalon Claro 1
Pantalon Oscuro 21
Pantalon Pastel 7
Polo Blanco 3
Polo Claro 8
Polo Oscuro 1
CrossTable1
Prenda Blanco Claro Oscuro
Camisa 5 0 0
Camisa 0 0 13
Camisa 0 0 0
Chompa 6 0 0
Chompa 0 9 0
Chompa 0 0 11
Chompa 0 0 0
Pantalon 0 1 0
Pantalon 0 0 21
Pantalon 0 0 0
Polo 3 0 0
Polo 0 8 0
Polo 0 0 1
#Prenda
DAI - Ing. Arturo Rozas Huacho 6
4.1.7.- Tablas Cruzadas…
Sistemas de Base de Datos
Paso 2.- Totalizar cada columna, considerando la prenda como
criterio de grupo.
select Prenda,
"Blanco" = sum(Blanco),
"Claro" = sum(Claro),
"Oscuro" = sum(Oscuro)
from #Prenda
group by Prenda
Prenda Blanco Claro Oscuro
Camisa 5 0 0
Camisa 0 0 13
Camisa 0 0 0
Chompa 6 0 0
Chompa 0 9 0
Chompa 0 0 11
Chompa 0 0 0
Pantalon 0 1 0
Pantalon 0 0 21
Pantalon 0 0 0
Polo 3 0 0
Polo 0 8 0
Polo 0 0 1
#Prenda
Prenda Blanco Claro Oscuro
Camisa 5 0 13
Chompa 6 9 11
Pantalon 0 1 21
Polo 3 8 1
Resultado
DAI - Ing. Arturo Rozas Huacho 7
4.1.7.- Tablas Cruzadas…
Sistemas de Base de Datos
Algoritmo genérico en un solo paso.
select Prenda,
"Blanco" = sum(case when Color = 'Blanco' then Cantidad else 0 end),
"Claro" = sum(case when Color = 'Claro' then Cantidad else 0 end),
"Oscuro" = sum(case when Color = 'Oscuro' then Cantidad else 0 end)
from CrossTable1
group by Prenda
Prenda Blanco Claro Oscuro
Camisa 5 0 13
Chompa 6 9 11
Pantalon 0 1 21
Polo 3 8 1
Resultado
Prenda Color Cantidad
Camisa Blanco 5
Camisa Oscuro 13
Camisa Pastel 12
Chompa Blanco 6
Chompa Claro 9
Chompa Oscuro 11
Chompa Pastel 2
Pantalon Claro 1
Pantalon Oscuro 21
Pantalon Pastel 7
Polo Blanco 3
Polo Claro 8
Polo Oscuro 1
CrossTable1
DAI - Ing. Arturo Rozas Huacho 8
4.1.7.- Tablas Cruzadas Dinámicas…
Sistemas de Base de Datos
En este tipo de tablas cruzadas no se conoce de
antemano el número de columnas. En consecuencia no
se puede aplicar el algoritmo anterior.
Prenda Color Cantidad
Camisa Blanco 5
Camisa Oscuro 13
Camisa Pastel 12
Chompa Blanco 6
Chompa Claro 9
Chompa Oscuro 11
Chompa Pastel 2
Pantalon Claro 1
Pantalon Oscuro 21
Pantalon Pastel 7
Polo Blanco 3
Polo Claro 8
Polo Oscuro 1
CrossTable1
Por ejemplo, de la anterior tabla
se desea analizar las unidades
Vendidas de todos los tipos de
Prenda y de todos los colores.
Prenda Blanco Claro Oscuro Pastel
Camisa 5 0 13 12
Chompa 6 9 11 2
Pantalon 0 1 21 7
Polo 3 8 1 0
DAI - Ing. Arturo Rozas Huacho 9
4.1.7.- Tablas Cruzadas Dinámicas…
Sistemas de Base de Datos
-- Generar tabla temporal con solo Color
select distinct cast(Color as varchar(2000)) Color
into #Color
from CrossTable1
order by Color;
-- Concatenar los Colores en la variable @Colores
declare @Colores varchar(2000);
set @Colores = '';
update #Color
set @Colores = Color = @Colores+','+Color;
-- Quitar primera coma
set @Colores = SubString(@Colores,2,2000);
-- Construir sentencia SQL que permita generar el Cross Table
declare @TextoSQL varchar(2000);
declare @Posicion int;
declare @Color varchar(12);
DAI - Ing. Arturo Rozas Huacho 10
4.1.7.- Tablas Cruzadas Dinámicas…
Sistemas de Base de Datos
set @TextoSQL = 'SELECT Prenda '
while @Colores <> ''
begin
-- Extraer Color
set @Posicion = CharIndex(',',@Colores);
if @Posicion > 0
begin
set @Color = SubString(@Colores,1,@Posicion-1);
set @Colores = SubString(@Colores,@Posicion+1,2000);
end
else
begin
set @Color = @Colores;
set @Colores = '';
end;
-- Crear sentencia SQL para Color
set @TextoSQL = @TextoSQL + ',"'+@Color+'"=SUM(case when Color =
'''+@Color+''' then Cantidad else '''' end)';
end; -- while
DAI - Ing. Arturo Rozas Huacho 11
4.1.7.- Tablas Cruzadas Dinámicas…
Sistemas de Base de Datos
set @TextoSQL = @TextoSQL + ' FROM CrossTable1 GROUP BY Prenda';
-- Ejecutar SQL
exec(@TextoSQL)
El contenido de la variable @TextoSQL es:
select Prenda,
"Blanco" = sum(case when Color = 'Blanco' then Cantidad else 0 end),
"Claro" = sum(case when Color = 'Claro' then Cantidad else 0 end),
"Oscuro" = sum(case when Color = 'Oscuro' then Cantidad else 0 end)
from CrossTable1
group by Prenda

Más contenido relacionado

Más de JamesHerberthBacaTel (8)

diseño d ediapositivas utilizando power point
diseño d ediapositivas utilizando power pointdiseño d ediapositivas utilizando power point
diseño d ediapositivas utilizando power point
 
neuromarketing.pptx
neuromarketing.pptxneuromarketing.pptx
neuromarketing.pptx
 
Caso Luciana.pptx
Caso Luciana.pptxCaso Luciana.pptx
Caso Luciana.pptx
 
La biologia.pptx
La biologia.pptxLa biologia.pptx
La biologia.pptx
 
Huayno.pptx
Huayno.pptxHuayno.pptx
Huayno.pptx
 
Figuras literarias.pptx
Figuras literarias.pptxFiguras literarias.pptx
Figuras literarias.pptx
 
IDEA DE NEGOCIO EN EL PERU.ppt
IDEA DE NEGOCIO EN EL PERU.pptIDEA DE NEGOCIO EN EL PERU.ppt
IDEA DE NEGOCIO EN EL PERU.ppt
 
Ciclo del nitrogeno.pptx
Ciclo del nitrogeno.pptxCiclo del nitrogeno.pptx
Ciclo del nitrogeno.pptx
 

Último

triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciaferg6120
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfJC Díaz Herrera
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxMiguelPerz4
 
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirTriptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirluis809799
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfJC Díaz Herrera
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfJC Díaz Herrera
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfJC Díaz Herrera
 
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfPosiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfJC Díaz Herrera
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICAYOSHELINSARAIMAMANIS2
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOJuan Carlos Fonseca Mata
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfJC Díaz Herrera
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfJC Díaz Herrera
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfDodiAcuaArstica
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfJC Díaz Herrera
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosEstefaniaRojas54
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdfJC Díaz Herrera
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalMarcosAlvarezSalinas
 
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllJulietaCarbajalOsis
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosMarycarmenNuez4
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxLuisAngelYomonaYomon
 

Último (20)

triptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescenciatriptico-de-las-drogas en la adolescencia
triptico-de-las-drogas en la adolescencia
 
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdfPosiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
Posiciones_del_sionismo_en_los_imperios globales de la humanidad (2024).pdf
 
Tipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptxTipos de Educacion en diferentes partes del mundo.pptx
Tipos de Educacion en diferentes partes del mundo.pptx
 
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudirTriptico-del-Bullying qué es, cómo detectarlo, donde acudir
Triptico-del-Bullying qué es, cómo detectarlo, donde acudir
 
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdfLos artistas mexicanos con más ventas de discos en la historia (2024).pdf
Los artistas mexicanos con más ventas de discos en la historia (2024).pdf
 
Las mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdfLas mujeres más ricas del mundo (2024).pdf
Las mujeres más ricas del mundo (2024).pdf
 
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdfLos más ricos administradores de fondo de cobertura (1968-2024).pdf
Los más ricos administradores de fondo de cobertura (1968-2024).pdf
 
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdfPosiciones de México en el PNB PPA per cápita (1982-2024).pdf
Posiciones de México en el PNB PPA per cápita (1982-2024).pdf
 
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICACNEB-CURRICULO NACIONAL DE EDUCACION BASICA
CNEB-CURRICULO NACIONAL DE EDUCACION BASICA
 
Panorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATOPanorama Sociodemográfico de México 2020: GUANAJUATO
Panorama Sociodemográfico de México 2020: GUANAJUATO
 
Las familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdfLas familias más ricas del sionismo en el siglo XXI.pdf
Las familias más ricas del sionismo en el siglo XXI.pdf
 
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdfIndustria musical de EUA vs Industria musical Corea del Sur (2024).pdf
Industria musical de EUA vs Industria musical Corea del Sur (2024).pdf
 
Presentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdfPresentacion-Prevencion-Incendios-Forestales.pdf
Presentacion-Prevencion-Incendios-Forestales.pdf
 
Posiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdfPosiciones en el IDH global de EUA (1950-2024).pdf
Posiciones en el IDH global de EUA (1950-2024).pdf
 
PIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos añosPIB PERÚ datos y análisis de los últimos años
PIB PERÚ datos y análisis de los últimos años
 
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
Novelas Turcas vs Series de EUA en audiencia  (2024).pdfNovelas Turcas vs Series de EUA en audiencia  (2024).pdf
Novelas Turcas vs Series de EUA en audiencia (2024).pdf
 
Gestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajalGestión Logística maria palmira guti cabajal
Gestión Logística maria palmira guti cabajal
 
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
llllllllllllllllllllllllllllllllllllllllllllllllllllllllll
 
Partes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicosPartes y elementos de una iglesia básicos
Partes y elementos de una iglesia básicos
 
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docxAA CUADRO DE TEORIA DEL CASO. (1) (1).docx
AA CUADRO DE TEORIA DEL CASO. (1) (1).docx
 

Diapositivas_de_Base_Datos_CrossTable.ppt

  • 1. DAI - Ing. Arturo Rozas Huacho 1 4.1.7.- Tablas Cruzadas Sistemas de Base de Datos Para entender el concepto de tablas cruzadas, veamos el siguiente ejemplo: Supongamos que se desea Analizar las ventas por tipo de prenda y color. En un proceso previo se obtuvo la siguiente tabla. Prenda Color Cantidad Camisa Blanco 5 Camisa Oscuro 13 Camisa Pastel 12 Chompa Blanco 6 Chompa Claro 9 Chompa Oscuro 11 Chompa Pastel 2 Pantalon Claro 1 Pantalon Oscuro 21 Pantalon Pastel 7 Polo Blanco 3 Polo Claro 8 Polo Oscuro 1 CrossTable1
  • 2. DAI - Ing. Arturo Rozas Huacho 2 4.1.7.- Tablas Cruzadas Sistemas de Base de Datos Prenda Color Cantidad Camisa Blanco 5 Camisa Oscuro 13 Camisa Pastel 12 Chompa Blanco 6 Chompa Claro 9 Chompa Oscuro 11 Chompa Pastel 2 Pantalon Claro 1 Pantalon Oscuro 21 Pantalon Pastel 7 Polo Blanco 3 Polo Claro 8 Polo Oscuro 1 CrossTable1 Atributos de Medición Atributos de Dimensión
  • 3. DAI - Ing. Arturo Rozas Huacho 3 4.1.7.- Tablas Cruzadas Sistemas de Base de Datos Prenda Color Cantidad Camisa Blanco 5 Camisa Oscuro 13 Camisa Pastel 12 Chompa Blanco 6 Chompa Claro 9 Chompa Oscuro 11 Chompa Pastel 2 Pantalon Claro 1 Pantalon Oscuro 21 Pantalon Pastel 7 Polo Blanco 3 Polo Claro 8 Polo Oscuro 1 CrossTable1 Prenda Blanco Claro Oscuro Pastel Camisa 5 0 13 12 Chompa 6 9 11 2 Pantalon 0 1 21 7 Polo 3 8 1 0 Los valores del atributo de la dimensión Color se utilizan como columnas en la nueva tabla. Este tipo de resúmenes es el primer nivel de análisis de la información y es una necesidad frecuente en el apoyo a la toma de decisiones.
  • 4. DAI - Ing. Arturo Rozas Huacho 4 4.1.7.- Tablas Cruzadas… Sistemas de Base de Datos Paso 1.- Supongamos que ya se tiene la siguiente tabla: CrossTable1 (Prenda, Color, Cantidad) A partir de ésta, generar una tabla temporal con las siguientes Columnas: Resultado(Prenda, Blanco, Claro, Oscuro) select Prenda, "Blanco" = case when Color = 'Blanco' then Cantidad else 0 end, "Claro" = case when Color = 'Claro' then Cantidad else 0 end, "Oscuro" = case when Color = 'Oscuro' then Cantidad else 0 end into #Prenda from CrossTable1
  • 5. DAI - Ing. Arturo Rozas Huacho 5 4.1.7.- Tablas Cruzadas… Sistemas de Base de Datos select Prenda, "Blanco" = case when Color = 'Blanco' then Cantidad else 0 end, "Claro" = case when Color = 'Claro' then Cantidad else 0 end, "Oscuro" = case when Color = 'Oscuro' then Cantidad else 0 end into #Prenda from CrossTable1 Prenda Color Cantidad Camisa Blanco 5 Camisa Oscuro 13 Camisa Pastel 12 Chompa Blanco 6 Chompa Claro 9 Chompa Oscuro 11 Chompa Pastel 2 Pantalon Claro 1 Pantalon Oscuro 21 Pantalon Pastel 7 Polo Blanco 3 Polo Claro 8 Polo Oscuro 1 CrossTable1 Prenda Blanco Claro Oscuro Camisa 5 0 0 Camisa 0 0 13 Camisa 0 0 0 Chompa 6 0 0 Chompa 0 9 0 Chompa 0 0 11 Chompa 0 0 0 Pantalon 0 1 0 Pantalon 0 0 21 Pantalon 0 0 0 Polo 3 0 0 Polo 0 8 0 Polo 0 0 1 #Prenda
  • 6. DAI - Ing. Arturo Rozas Huacho 6 4.1.7.- Tablas Cruzadas… Sistemas de Base de Datos Paso 2.- Totalizar cada columna, considerando la prenda como criterio de grupo. select Prenda, "Blanco" = sum(Blanco), "Claro" = sum(Claro), "Oscuro" = sum(Oscuro) from #Prenda group by Prenda Prenda Blanco Claro Oscuro Camisa 5 0 0 Camisa 0 0 13 Camisa 0 0 0 Chompa 6 0 0 Chompa 0 9 0 Chompa 0 0 11 Chompa 0 0 0 Pantalon 0 1 0 Pantalon 0 0 21 Pantalon 0 0 0 Polo 3 0 0 Polo 0 8 0 Polo 0 0 1 #Prenda Prenda Blanco Claro Oscuro Camisa 5 0 13 Chompa 6 9 11 Pantalon 0 1 21 Polo 3 8 1 Resultado
  • 7. DAI - Ing. Arturo Rozas Huacho 7 4.1.7.- Tablas Cruzadas… Sistemas de Base de Datos Algoritmo genérico en un solo paso. select Prenda, "Blanco" = sum(case when Color = 'Blanco' then Cantidad else 0 end), "Claro" = sum(case when Color = 'Claro' then Cantidad else 0 end), "Oscuro" = sum(case when Color = 'Oscuro' then Cantidad else 0 end) from CrossTable1 group by Prenda Prenda Blanco Claro Oscuro Camisa 5 0 13 Chompa 6 9 11 Pantalon 0 1 21 Polo 3 8 1 Resultado Prenda Color Cantidad Camisa Blanco 5 Camisa Oscuro 13 Camisa Pastel 12 Chompa Blanco 6 Chompa Claro 9 Chompa Oscuro 11 Chompa Pastel 2 Pantalon Claro 1 Pantalon Oscuro 21 Pantalon Pastel 7 Polo Blanco 3 Polo Claro 8 Polo Oscuro 1 CrossTable1
  • 8. DAI - Ing. Arturo Rozas Huacho 8 4.1.7.- Tablas Cruzadas Dinámicas… Sistemas de Base de Datos En este tipo de tablas cruzadas no se conoce de antemano el número de columnas. En consecuencia no se puede aplicar el algoritmo anterior. Prenda Color Cantidad Camisa Blanco 5 Camisa Oscuro 13 Camisa Pastel 12 Chompa Blanco 6 Chompa Claro 9 Chompa Oscuro 11 Chompa Pastel 2 Pantalon Claro 1 Pantalon Oscuro 21 Pantalon Pastel 7 Polo Blanco 3 Polo Claro 8 Polo Oscuro 1 CrossTable1 Por ejemplo, de la anterior tabla se desea analizar las unidades Vendidas de todos los tipos de Prenda y de todos los colores. Prenda Blanco Claro Oscuro Pastel Camisa 5 0 13 12 Chompa 6 9 11 2 Pantalon 0 1 21 7 Polo 3 8 1 0
  • 9. DAI - Ing. Arturo Rozas Huacho 9 4.1.7.- Tablas Cruzadas Dinámicas… Sistemas de Base de Datos -- Generar tabla temporal con solo Color select distinct cast(Color as varchar(2000)) Color into #Color from CrossTable1 order by Color; -- Concatenar los Colores en la variable @Colores declare @Colores varchar(2000); set @Colores = ''; update #Color set @Colores = Color = @Colores+','+Color; -- Quitar primera coma set @Colores = SubString(@Colores,2,2000); -- Construir sentencia SQL que permita generar el Cross Table declare @TextoSQL varchar(2000); declare @Posicion int; declare @Color varchar(12);
  • 10. DAI - Ing. Arturo Rozas Huacho 10 4.1.7.- Tablas Cruzadas Dinámicas… Sistemas de Base de Datos set @TextoSQL = 'SELECT Prenda ' while @Colores <> '' begin -- Extraer Color set @Posicion = CharIndex(',',@Colores); if @Posicion > 0 begin set @Color = SubString(@Colores,1,@Posicion-1); set @Colores = SubString(@Colores,@Posicion+1,2000); end else begin set @Color = @Colores; set @Colores = ''; end; -- Crear sentencia SQL para Color set @TextoSQL = @TextoSQL + ',"'+@Color+'"=SUM(case when Color = '''+@Color+''' then Cantidad else '''' end)'; end; -- while
  • 11. DAI - Ing. Arturo Rozas Huacho 11 4.1.7.- Tablas Cruzadas Dinámicas… Sistemas de Base de Datos set @TextoSQL = @TextoSQL + ' FROM CrossTable1 GROUP BY Prenda'; -- Ejecutar SQL exec(@TextoSQL) El contenido de la variable @TextoSQL es: select Prenda, "Blanco" = sum(case when Color = 'Blanco' then Cantidad else 0 end), "Claro" = sum(case when Color = 'Claro' then Cantidad else 0 end), "Oscuro" = sum(case when Color = 'Oscuro' then Cantidad else 0 end) from CrossTable1 group by Prenda

Notas del editor

  1. DAI - Ing. Arturo Rozas Huacho
  2. DAI - Ing. Arturo Rozas Huacho
  3. DAI - Ing. Arturo Rozas Huacho
  4. DAI - Ing. Arturo Rozas Huacho
  5. DAI - Ing. Arturo Rozas Huacho
  6. DAI - Ing. Arturo Rozas Huacho
  7. DAI - Ing. Arturo Rozas Huacho
  8. DAI - Ing. Arturo Rozas Huacho
  9. DAI - Ing. Arturo Rozas Huacho
  10. DAI - Ing. Arturo Rozas Huacho
  11. DAI - Ing. Arturo Rozas Huacho