Pasar campos de columna a títulos de columna

Tengo una base de datos con los siguientes campos:
Población, sexo(hombre/mujer), años, total
Donde cada fila contiene (en caso que haya) lo siguiente (ejemplo)
Población sexo edad total población
Granada hombre 0 3
I así en todos los campos,
Necesito hacer una consulta que quede como
población, edad, hombres, mujeres
donde el total población vaia por edad en cada campo homres o mujeres.
Conseguí hacerlo pero los campos no hay personas por ejemplo en la edad de 97 años (o solo hay mujeres o hombres) no los coge ya que no coinciden,
¿Mi pregunta es como podría hacerlo para que si solo hubiera hombre o mujeres en aquella población por el rango de edad que necesito me pusiera un 0 en el campo que no exista?

1 respuesta

Respuesta
1
Si tenemos una tabla Tabla1 con los campos Poblacion / Sexo / Edad / TotalPoblacion
Abrimos una consulta nueva>Vista diseño>Cerramos sin escoger tabla>Abrimos la vista SQL y pegamos el código
TRANSFORM Sum(Tabla1.TotalPoblacion) AS SumaDeTotalPoblacion
SELECT Tabla1.Poblacion, Tabla1.Edad, Sum(Tabla1.TotalPoblacion) AS [Total de TotalPoblacion]
FROM Tabla1
GROUP BY Tabla1.Poblacion, Tabla1.Edad
PIVOT Tabla1.Sexo;
Así crearemos una consulta de referencias cruzadas que creo que se aproxima a lo que buscas.
Una aperta
Muchas gracias por tu rapidez pero no es lo que busco, no necesito ninguna suma, he probado en hacerlo pero no me sirve, te cuento:
Tengo esto:
C_Província       Mun     DESC_MUN      Edad        sexo      Total_Mun
17 17001 AGULLANA 0 hombre 5
17 17001 AGULLANA 0 Mujer 2
17 17001 AGULLANA 1 hombre 1
17 17001 AGULLANA 1 Mujer 3
17 17001 AGULLANA 2 hombre 5
17 17001 AGULLANA 2 Mujer 4
17 17001 AGULLANA 3 Mujer 4
Con 18000 registros por población en cada edat...
El problema es que cuando en una edad (ultima fila ejemplo) no hay hombres (o mujeres) directamente el registro en lugar de ser zero, no existe por lo que a la que quiero separar el sexo en dos columnas los campos en que a POR años no hay hombres o mujeres, o se lo salta (pierdo una celda) o me hace repeticiones...
Según el ejemplo anterior necessitaria esto:
C_Província       Mun     DESC_MUN      Edad        Hombres     Mujeres
17 17001 AGULLANA 0 5 2
17 17001 AGULLANA 1 1 3
17 17001 AGULLANA 2 5 4
17 17001 AGULLANA 3 0 4
El gran problema que tengo es que la celda de zero en la edad de 3 años en hombres no existe... pero tendría que quedarme así i no se si tendría que ir añadiendo los registros vía VB o alguna idea que no conozco...
Muchas gracias
El código nuevo sería:
TRANSFORM Sum(TblDatos.Total_Mun) AS SumaDeTotal_Mun
SELECT TblDatos.C_Província, TblDatos.Mun, TblDatos.DESC_MUN, TblDatos.Edad
FROM TblDatos
GROUP BY TblDatos.C_Província, TblDatos.Mun, TblDatos.DESC_MUN, TblDatos.Edad
PIVOT TblDatos.Sexo;

El nombre que he usado para la tabla es TblDatos por lo que tu debes de cambiarlo por el nombre real de tu tabla.
Una aperta.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas