SQL Server - Como imprimir registros uno al lado del otro con máximo de 5

 
Vista:
Imágen de perfil de Javier H

Como imprimir registros uno al lado del otro con máximo de 5

Publicado por Javier H (5 intervenciones) el 24/05/2017 15:47:45
Buenos Dias.

Cuando realizo un select de una tabla los registros vienen asi:

reg1
reg2
reg3
...
reg13

En fin, lo que necesito es conseguir esto:

reg1 reg2 reg3 reg4 reg5
reg6 reg7 reg8 reg9 reg 10
reg 11 reg12 reg13.

Es decir que se muestre uno al lado del otro pero hasta que llegen a 5, despues que cambien de fila.

Si alguien sabe como hacerlo se lo agradeceria mucho.

Gracias!.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Isaias
Val: 3.250
Oro
Ha mantenido su posición en SQL Server (en relación al último mes)
Gráfica de SQL Server

Como imprimir registros uno al lado del otro con máximo de 5

Publicado por Isaias (4558 intervenciones) el 24/05/2017 17:09:05
Hola

Si vas a GOOGLE y tecleas "SQL SERVER ROWS TO COLUMNS", encontraras un sin fin de propuestas para realizar lo que pides, selecciona la que mas te guste y si tienes dudas de como implementar tu consulta, entonces vienes y nos preguntas explicitamente que es lo que necesitas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Como imprimir registros uno al lado del otro con máximo de 5

Publicado por jams (93 intervenciones) el 11/07/2017 20:18:38
Tal vez un poco tarde, pero va

No entiendo bien lo que deseas hacer, creo que no aplica hacer un pivot porque no tienes una columna que norme ese pivot, este es un ejemplo sencillo que ilustra como podría hacerse


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
drop table #tabla
drop table #tablar
 
create table #tabla (id int identity,campo varchar(10))
create table #tablaR (ID int identity,campo1 varchar(10),campo2 varchar(10),campo3 varchar(10),campo4 varchar(10),campo5 varchar(10))
declare @cnt int=1,@sql varchar(100)='',@reg int=0,@renglon int=0,@fila int=1
 
 
 
insert into #tabla values('uno'),('dos'),('tres'),('cuatro'),('cinco'),('seis'),('siete'),('ocho'),('nueve'),('diez'),('once'),('doce'),('trece')
select @reg=COUNT(*) from #tabla
 
 
 
while @cnt <= @reg
begin
   if @cnt=@renglon + 1
   begin
   set @sql= 'insert into #tablaR(campo' + cast(@cnt - @renglon as varchar(2)) + ') select campo from #tabla where id=' + cast(@cnt as varchar(2))
   print @sql
   execute (@sql)
   set @cnt=@cnt+1
   if @cnt= 6 or @cnt= 11
     begin
        set @renglon=@renglon+5
        set @fila=@fila+1
     end
   print @cnt
 
   end
   else
   begin
       set @sql='update #tablar set campo' + cast(@cnt - @renglon as varchar(2)) + '=(select campo from #tabla where id=' + cast(@cnt as varchar(10)) + ') where id=' + cast(@fila as varchar(2))
        print ( @sql)
        execute(@sql)
       set @cnt=@cnt+1
       if @cnt= 6 or @cnt= 11
       begin
        set @renglon=@renglon+5
         set @fila=@fila+1
       end
   end
end
 
select * from #tabla
select * from #tablar






Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar