Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   SQL (https://www.clubdelphi.com/foros/forumdisplay.php?f=6)
-   -   consulta sql server 2000 con pivot, ni idea... (https://www.clubdelphi.com/foros/showthread.php?t=51017)

Gaim2205 04-12-2007 20:29:14

consulta sql server 2000 con pivot, ni idea...
 
He tratado realizar una consulta sin éxito, voy a explicar lo mejor posible y ojalá alguien con mejores conocimientos de sql que yo (que serán muchos) pueda ayudarme.

Obtendré la informacion de 3 tablas(campos):
- tabla trabajadores(trabajador[int], nombre[char])
- tabla acum_concepto(trabajador[int], concepto[int], importe[real])
- tabla conceptos(concepto[int], descripcion[char])

y el resultado que necesito es el siguiente:

Trabajador - Nombre - descripcionconcepto1... descripcionconceptoN
1 - Juan... - ImporteConcepto1... - ImporteConceptoN

Como pueden ver, necesita "pivotearse" el campo acum_concepto.concepto para que cada concepto encontrado sea una columna del resultado. A su vez debe mostrarse la descripcion del concepto(conceptos.descripcion), no acum_concepto.concepto(que es numérico)

Espero haberme dado a entender, aprecio mucho cualquier ayuda en el tema.

Gaim2205 05-12-2007 18:12:10

Hasta el momento tengo esto. Que es algo sencillo

Código SQL [-]
SELECT DISTINCT
Fecha,
case when Concepto = 1110 then importe else 0 end Sueldo,
case when Concepto = 1310 then importe else 0 end PremioAsistencia
FROM dbo.acum_concepto 
WHERE 
dbo.acum_concepto.trabajador = 8089 and dbo.acum_concepto.fecha 
between '20071028' and '20071125' 
order by dbo.acum_concepto.fecha

Pero por cada concepto diferente se agrega un renglon, dejando los demas conceptos en 0. Como puedo hacer que todos los conceptos de una misma fecha aparezcan en el mismo renglon?

Gracias!

fjcg02 05-12-2007 22:40:11

Añade funciones de suma y agrupa por el campo que quieras

Código SQL [-]
SELECT Fecha,
sum(case when Concepto = 1110 then importe else 0 end) AS Sueldo,
sum(case when Concepto = 1310 then importe else 0 end) AS PremioAsistencia
FROM dbo.acum_concepto 
WHERE 
dbo.acum_concepto.trabajador = 8089 and dbo.acum_concepto.fecha 
between '20071028' and '20071125' 
group by fecha
order by dbo.acum_concepto.fecha

Espero que te sirva.

Un saludo


La franja horaria es GMT +2. Ahora son las 10:57:59.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi