Usuário com melhor resposta
COMO REPETIR REGISTROS EM SQL?

Pergunta
-
Respostas
-
Use uma tabela auxiliar...
Por ex:
declare @Tab table (Codigo Int, Produto VarChar(30), Estoque Int) insert into @Tab values(1,'Motor BMW', 5) insert into @Tab values(2,'Trator Agrale', 3); WITH Seq AS(SELECT 1 AS ID UNION ALL SELECT ID + 1 FROM Seq WHERE ID < 100) SELECT t.* FROM @Tab t inner join Seq on Seq.ID between 0 and t.Estoque order by Codigo OPTION (MAXRECURSION 0);
Fabiano Neves Amorim - MCTS / MCP - SQLServer - http://fabianosqlserver.spaces.live.com/- Marcado como Resposta PabloHB quinta-feira, 16 de abril de 2009 20:49
Todas as Respostas
-
-
-
-
-
Use uma tabela auxiliar...
Por ex:
declare @Tab table (Codigo Int, Produto VarChar(30), Estoque Int) insert into @Tab values(1,'Motor BMW', 5) insert into @Tab values(2,'Trator Agrale', 3); WITH Seq AS(SELECT 1 AS ID UNION ALL SELECT ID + 1 FROM Seq WHERE ID < 100) SELECT t.* FROM @Tab t inner join Seq on Seq.ID between 0 and t.Estoque order by Codigo OPTION (MAXRECURSION 0);
Fabiano Neves Amorim - MCTS / MCP - SQLServer - http://fabianosqlserver.spaces.live.com/- Marcado como Resposta PabloHB quinta-feira, 16 de abril de 2009 20:49
-
Oi Fabiano,
Eu que adoro as CTEs nunca tinha pensado por esse lado. Interessante...
Normalmente eu faria assim
declare @Tab table (Codigo Int, Produto VarChar(30), Estoque Int) insert into @Tab values(1,'Motor BMW', 5) insert into @Tab values(2,'Trator Agrale', 3) ;WITH Nums (Num) As ( SELECT 0 UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) SELECT Codigo, Produto, Estoque FROM Nums As N1 CROSS JOIN Nums As N2 INNER JOIN @Tab AS T ON Estoque > (N1.Num * 10) + N2.Num
[ ]s,Gustavo Maia Aguiar
http://gustavomaiaaguiar.spaces.live.comComo realizar cálculos com horas no SQL Server – Parte II
http://gustavomaiaaguiar.spaces.live.com/blog/cns!F4F5C630410B9865!532.entry
Classifique as respostas. O seu feedback é imprescindível -
-
Pois é Maia, uma vez, caiu na minha mão um script de conversão onde o desenvolvedor havia feito um cursor para transformar algo tipo assim:
Parcela_Inicial Parcela_Final
1 60
30 52
Em:
Parcela_Inicial Parcela_Final
1 60
1 60
...repetisse o número de vezes do valor gravado na columa Parcela_Final(60)... e depois partisse para o próximo registro.
Dai troquei o cursor por um código utilizando a mesma lógica acima... o ganho foi muito alto...
Fabiano Neves Amorim - MCTS / MCP - SQLServer - http://fabianosqlserver.spaces.live.com/