Mostrar resultados en forma vertical

27/04/2004 - 01:06 por Carlos Zavala | Informe spam
Hola grupo, tengo el siguiente problema y no se si se
pueda hacer esto en sql server.
La siguiente sentecia de sql me arroja el siguiente
resultado:
SELECT DISTINCT mes,anio,COUNT(*) AS 'Sin_Costo' FROM
vwSiniestrosMesAnio where costo=1 and STATUS=3 AND
fecharepor>= '06/16/2003 00:00:00' and
fecharepor<= '04/26/2004 23:59:59' GROUP BY mes,anio

mes anio sin_costo
6 2003 56
7 2003 111
8 2003 138
9 2003 103
10 2003 128
11 2003 75
12 2003 71
1 2004 127
2 2004 149
3 2004 39
4 2004 1

y quisiera que quedara de la siguiente manera:
6 7 8 9 10 11 12 1 2 3 4
2003 2003 2003 2003 2003 2003 2003 2004 2004 2004 2004
56 111 138 103 128 75 71 127 149 39 1

¿Hay alguna manera de hacer esto en sql server? o
simplemente no se puede hacer esto.

Gracias a todos por adelantado.
 

Leer las respuestas

#1 Isaías
27/04/2004 - 01:44 | Informe spam
Vea este ejemplo y diganos si le sirve:


Por ejemplo, la extraccion de datos se ve de esta forma:

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

puede utilizar PIVOT para mostrarlas de esta forma:

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