SQL - Repetir filas

 
Vista:

Repetir filas

Publicado por Antonio Galván (2 intervenciones) el 23/03/2017 14:22:43
Buenas tardes,
Necesito poder realizar un Split de una fila tantas veces como indica el campo "RowsNumber" a partir de la siguiente tabla:

PartNumber PartsSkid Quantity RowsNumber
NS041.1P 12 42 4
NS041.1P 12 183 16
NS041.1P 12 387 33
NS041.1P 12 138 12

Por ejemplo, para la primera fila, el resultado debería ser este:

PartNumber PartsSkid Quantity RowsNumber
NS041.1P 12 42 4
NS041.1P 12 42 4
NS041.1P 12 42 4
NS041.1P 12 42 4

Es decir, repetir la fila 4 veces tal y como indica RowsNumber.

¿Podéis echarme una mano para obtener este resultado?

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: 2.542
Oro
Ha mantenido su posición en SQL (en relación al último mes)
Gráfica de SQL

Repetir filas

Publicado por Isaias (1921 intervenciones) el 23/03/2017 16:51:03
¿En SQL SERVER?, ¿Que version - edicion?
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

Repetir filas

Publicado por Isaias (1 intervención) el 23/03/2017 17:08:45
Suponiendo que fuera SQL Server


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
-- Creo una funcion de usuario que nos ayudara a realizar el split de los registros
CREATE FUNCTION NumbersTable (
  @fromNumber int,
  @toNumber int,
  @byStep int
)
RETURNS @NumbersTable TABLE (i int)
AS
BEGIN
  WITH CTE_NumbersTable AS (
    SELECT @fromNumber AS i
    UNION ALL
    SELECT i + @byStep
    FROM CTE_NumbersTable
    WHERE
      (i + @byStep) <= @toNumber
  )
  INSERT INTO @NumbersTable
  SELECT i FROM CTE_NumbersTable OPTION (MAXRECURSION 0)
 
  RETURN;
END
 
-- Creo mi tabla de prueba
Create table #repeatrows (PartNumber varchar(30), PartsSkid int, Quantity int, RowsNummber int)
 
-- Inserto los registros que publicaste
 
insert into #repeatrows values('NS041.1P', 12, 42, 4),
('NS041.1P',  12, 183, 16),
('NS041.1P',  12, 387, 33),
('NS041.1P',  12, 138 ,12)
 
 
-- Pruebo la funcion
SELECT * -- PartNumber, PartsSkid, Quantity, RowsNumber
FROM #repeatrows r
CROSS APPLY dbo.NumbersTable (1,r.RowsNummber,1) --n
ORDER BY PartNumber
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

Repetir filas

Publicado por Antonio Galvan (2 intervenciones) el 23/03/2017 18:09:10
Muchísimas gracias Isaias, me ha funcionado a la primera!! Enorme ayuda!!
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
sin imagen de perfil

Repetir filas

Publicado por Guillermo (1 intervención) el 23/05/2018 22:38:31
Hola Isaias tengo la siguiente tabla de una base de datos de sql (aclaro que viene de ser importada de un excel) la idea es la misma que tiene
Antonio poder armar otra tabla en donde me figuren el campo Item -Desc repetidas n veces (me lo dice el campo imprimir) ,
Parece sencillo pero trato de hacerlo y me da errores por todos lados. Si me podes enviar una ayuda Muchas gracias
Por ejemplo
Item-Descripcion imprimir
AAAAAAAA 3


En otra tabla poner

Descripcion
AAAAAAAA
AAAAAAAA
AAAAAAAA

sql-prueba
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