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.

Preguntas similare

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
Respuesta Responder a este mensaje
#2 Javier Loria
27/04/2004 - 05:34 | Informe spam
Hola Carlos:
No existe forma de hacer esto en SQL, excepto usando SQL Dinamico y con
formulas demasiado complejas y largas, sobre todo si son mas de 10 filas.
Yo haria esto en cliente.
Saludos,

Javier Loria
Costa Rica
Se aprecia la inclusion de DDL (CREATE, INSERTS, etc.)
que pueda ser copiado y pegado al Query Analizer.
La version de SQL y Service Pack tambien ayuda.

Carlos Zavala escribio:
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.
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida