Urgente!!! Consulta SQL pasar datos de una tabla vertical a horizontal.

19/10/2004 - 14:06 por riospower | Informe spam
Hola grupo. Tengo una tabla como esta:

Empresa codcita fechacita

AGUSTIN BENITEZ SÁNCHEZ 0 28/07/2004
AGUSTIN MORALES MORAN 2 23/07/2004
AGUSTIN VELLOSO GONZALEZ 0 27/07/2004
AGUSTIN VELLOSO GONZALEZ 5 26/07/2004
AGUSTIN VELLOSO GONZALEZ 0 12/07/2004
AGUSTIN VELLOSO GONZALEZ 2 12/07/2004
AGUSTIN VELLOSO GONZALEZ 0 08/07/2004
AGUSTIN VELLOSO GONZALEZ 4 06/07/2004
AGUSTIN VELLOSO GONZALEZ 0 05/07/2004
AGUSTIN VELLOSO GONZALEZ 5 05/07/2004


Y me gustaría realizar un select q la transformara en la siguiente
tabla:

Empresa cita1 cita2 cita3 cita4 cita5
AGUSTIN BENITEZ SÁNCHEZ 0 null null null null
AGUSTIN MORALES MORAN 2 null null null null
AGUSTIN VELLOSO GONZALEZ 0 5 0 2 0

Como podeis observar solo me hacen falta las últimas cinco citas de
cada empresa o cliente, estas están ordenadas descendentemente (cita1
más reciente). ME da igual que aparezca null o -1 si no hay citas.

Si alguién tiene alguna solución agradecería que la posteara pq me
estoy volviendo locoooo...
 

Leer las respuestas

#1 Isaias
19/10/2004 - 17:19 | Informe spam
Hola

Aqui mismo hemos publicado varios ejemplos como este:

For example, given data as shown below:

ID year type amt
7 1999 1 23
8 1999 2 44
9 1999 3 55
10 2000 1 66
11 2000 2 77
12 2000 3 88
13 1999 1 11

... you can pivot the data to show the years down the side and the types
across the top...
year 1 2 3 RowTotal
1999 34 44 55 133
2000 66 77 88 231

... and get the SQL which would produce this table

SELECT Pivot_Data.*,
(Pivot_Data.[1] + Pivot_Data.[2] + Pivot_Data.[3]) AS RowTotal
FROM (SELECT [year],
SUM(CASE [type] WHEN '1' THEN [amt] ELSE 0 END) AS [1],
SUM(CASE [type] WHEN '2' THEN [amt] ELSE 0 END) AS [2],
SUM(CASE [type] WHEN '3' THEN [amt] ELSE 0 END) AS [3]
FROM (select * from zzjunk) AS Base_Data
GROUP BY [year]) AS Pivot_Data

Preguntas similares