Cómo transponer filas a columnas

03/12/2008 - 02:00 por fausto | Informe spam
Saludos listeros,

tengo una consulta la cual me devuelve varias filas en una sola columna,
de la siguiente manera:

101
102
103
104
201
202
203
301
302
303
304
401
402


necesito transponer la columna a filas, pero que quede de la siguiente
manera:

101 102 103 104
201 202 203
301 302 303 304
401 402

Es posible listero hacer esto por T-Sql?

de antemano agradezco su colaboraión..

fausto

Preguntas similare

Leer las respuestas

#1 Carlos Sacristan
03/12/2008 - 10:54 | Informe spam
Si la versión que tienes de SQL Server es a partir de la 2005, puedes probar
con el siguiente script:

-

create table #t (c1 int, calc as (c1 / 100))
go
insert #t (c1)
select 101 col union
select 102 union
select 103 union
select 104 union
select 201 union
select 202 union
select 203 union
select 301 union
select 302 union
select 303 union
select 304 union
select 401 union
select 402

SELECT DISTINCT d.transform
FROM #t t1
CROSS APPLY ( SELECT cast(c1 as varchar(10))+ ' '
FROM #t t2
WHERE t2.calc= t1.calc
ORDER BY c1
FOR XML PATH('') ) D (transform)



Un saludo
-
www.navento.com
Servicios de Localización GPS


"fausto" wrote:

Saludos listeros,

tengo una consulta la cual me devuelve varias filas en una sola columna,
de la siguiente manera:

101
102
103
104
201
202
203
301
302
303
304
401
402


necesito transponer la columna a filas, pero que quede de la siguiente
manera:

101 102 103 104
201 202 203
301 302 303 304
401 402

Es posible listero hacer esto por T-Sql?

de antemano agradezco su colaboraión..

fausto
Respuesta Responder a este mensaje
#2 fausto
03/12/2008 - 15:05 | Informe spam
Hola Cristian

la verdad soy muy nuevo en SQL, pero la tabla de donde debo hacer
lo q explico arriba es la siguiente:

tblHabitaciones
idHabitacion Habitacion
1 101
2 102
3 103
4 104
5 201
6 202
7 203
8 301
9 302
10 303
11 304

Lo que necesito hacer es mostrar en una winform en c#, que las
habitaciones se puedieran visualizar así:

101 102 103 104
201 202 203
302 302 303 304

eso es lo que necesito, que se pueda visualizar así, para que
a las enfermeras les quede mas fácil observar las habitaciones
ya que cada número tendrá como fondo un color el cual ellas
entenderán el estado en que se encuentra cada habitación.

Carlos muchas gracias por tu colaboración.

saludos,

Fausto

"Carlos Sacristan" wrote:

Si la versión que tienes de SQL Server es a partir de la 2005, puedes probar
con el siguiente script:

-

create table #t (c1 int, calc as (c1 / 100))
go
insert #t (c1)
select 101 col union
select 102 union
select 103 union
select 104 union
select 201 union
select 202 union
select 203 union
select 301 union
select 302 union
select 303 union
select 304 union
select 401 union
select 402

SELECT DISTINCT d.transform
FROM #t t1
CROSS APPLY ( SELECT cast(c1 as varchar(10))+ ' '
FROM #t t2
WHERE t2.calc= t1.calc
ORDER BY c1
FOR XML PATH('') ) D (transform)



Un saludo
-
www.navento.com
Servicios de Localización GPS


"fausto" wrote:

> Saludos listeros,
>
> tengo una consulta la cual me devuelve varias filas en una sola columna,
> de la siguiente manera:
>
> 101
> 102
> 103
> 104
> 201
> 202
> 203
> 301
> 302
> 303
> 304
> 401
> 402
>
>
> necesito transponer la columna a filas, pero que quede de la siguiente
> manera:
>
> 101 102 103 104
> 201 202 203
> 301 302 303 304
> 401 402
>
> Es posible listero hacer esto por T-Sql?
>
> de antemano agradezco su colaboraión..
>
> fausto
Respuesta Responder a este mensaje
#3 Carlos Sacristan
03/12/2008 - 16:56 | Informe spam
Creo que lo suyo sería que esa transformación la hicieras directamente en el
código, no en base de datos.

De todos modos, lo único que tendrías que hacer para que te funcionara con
tu tabla es cambiar el nombre de los objetos...

SELECT DISTINCT d.transform
FROM tblHabitaciones t1
CROSS APPLY ( SELECT cast(t2.habitacion as varchar(10))+ ' '
FROM tblHabitaciones t2
WHERE (t2.habitacion / 100 )= (t1.Habitacion / 100)
ORDER BY t2.habitacion
FOR XML PATH('') ) D (transform)

Un saludo
-
www.navento.com
Servicios de Localización GPS
Respuesta Responder a este mensaje
#4 fausto
03/12/2008 - 19:28 | Informe spam
Carlos,

yo también pensaba lo mismo, pero creo que es mas fácil
manipular y utilizar la aplicabilidad de las tablas dinámicas
en SQL, que manipular por código ésta información.

Poque en la winform simplemente recibo la información tal
cual y la pinto con los colores para diferenciar las habitaciones.

Otra Pregunta, se puede dejar el espacio para cuando exista
alguna habitación que no esté en servicio y no se quiere que
aparezca en el grid???

mas o menos así:

102 102 103 104
201 202 204
301 303 304


saludos y gracias,
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida