SQL - Select, representar valores de filas como columnas

   
Vista:

Select, representar valores de filas como columnas

Publicado por Jose Ibarz (3 intervenciones) el 05/03/2009 12:55:54
Hola a todos,

Tengo un problema a la hora de realizar una selección entre múltiples tablas. Necesito que datos de las filas aparezcan como columnas.

Tengo 3 tablas, llamadas Etapas, CargaEtapaDepto y Departamentos. Definidas de la siguiente forma.

Departmentos (ID, descripcion)
CargasEtapaDept (id, IDDEPARTAMENTO, IDETAPA, carga)
Etapas (ID, idProyecto, posicion, descripcion, finalizado(S/N))

Las columnas que los relacionan estan en mayúsculas.

En palabras, una etapa puede tener definidas varias cargas de trabajo para diferentes departamentos.

Por ahora lo más que he conseguido ha sido una select con el siguiente resultado:

etapa descripcionDept carga finalizado
----------------------------------------------------------------
1 Ingenieria 45 0
1 Mantenimiento 25 0
1 QA 15 0
1 FICO 15 0
2 IT 30 0
2 Ingenieria 30 0
2 Mantenimiento 40 0
3 QA 40 0
3 Mantenimiento 60 0
4 Ingenieria 40 1
4 Mantenimiento 50 1
4 QA 10 1
5 FICO 25 1
5 QA 75 1

el resultado que querría sería:

etapa finalizado ingenieria mantenimiento QA FICO IT
--------------------------------------------------------------------------------------
1 0 45 25 15 15 0
2 0 30 40 0 0 30
3 0 0 60 40 0 0
4 1 40 50 10 0 0
5 1 0 0 75 25 0

He estado leyendo sobre la función PIVOT, para SQL Server 2005, pero la base de datos es SQL Server 2000 y aún no está disponible.

Los departamentos (tanto el número de departamentos como el nombre) pueden ser variables, de ahí que no haga una select estática y asigne directamente el nombre de la columna devuelta.

Hay alguna manera de conseguirlo?

Muchas gracias.
Saludos.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Select, representar valores de filas como colum

Publicado por Ethan (16 intervenciones) el 10/03/2009 18:12:12
select distinct e.id as etapa, finalizado, (select ced.carga from CargasEtapaDept as ced where ced.idetapa=e.id and ced.iddepartamento=idingenieria) ingenieria,
(select ced.carga from CargasEtapaDept as ced where ced.idetapa=e.id and ced.iddepartamento=idimantto) mantto,
(select ced.carga from CargasEtapaDept as ced where ced.idetapa=e.id and ced.iddepartamento=idqa) qa,
(select ced.carga from CargasEtapaDept as ced where ced.idetapa=e.id and ced.iddepartamento=idfico) fico,(select ced.carga from CargasEtapaDept as ced where ced.idetapa=e.id and ced.iddepartamento=idti) ti
from etapas as e

idiingenieria, idmantto cambialos por el id del departamento .
espero te sirva. saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Select, representar valores de filas como colum

Publicado por Jose Ibarz (3 intervenciones) el 10/03/2009 18:29:39
Bueno, no exactamente, ya que a ésta consulta me refería al decir que son columnas estáticas pero es un comienzo.

Quizás con una consulta previa podría generar la select por código, así conseguiría que fuese dinámica.

Muchas gracias.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar