Code Snippet
SET
NOCOUNT ON;
CREATE
TABLE #Placas (placa varchar(10), cod numeric(6,0))
CREATE
TABLE #Placa(cod numeric(6,0))
CREATE
TABLE #TmpPlacas (RowId int Identity(1,1), cod numeric (6,0), placa varchar(10), nreg int)
DECLARE
@nr int, @i int
DECLARE
@cmd varchar(1000)
DECLARE
@ini int, @fim int, @j int, @nreg int, @cod int
DECLARE
@placa varchar(10)--, @cmd varchar(1000)
INSERT
INTO #Placas
VALUES
('XNL2165', 000001)
INSERT
INTO #Placas
VALUES
('XOC6407', 000001)
INSERT
INTO #Placas
VALUES
('XRD6350', 000001)
INSERT
INTO #Placas
VALUES
('XOS1243', 000002)
INSERT
INTO #Placas
VALUES
('XRE9028', 000002)
INSERT
INTO #Placas
VALUES
('XAP3138', '000003')
INSERT
INTO #Placas
VALUES
('XNO8086', 000003)
INSERT
INTO #Placas
VALUES
('XOF4093', 000003)
--CREATE TABLE #Placa(cod numeric(6,0))
--DECLARE @nr int, @i int
--DECLARE @cmd varchar(1000)
Select
@nr = Max(tb1.cod) From (Select count(cod) as cod
From #Placas
Group By cod) As tb1
Set
@i = 1
WHILE
@i <= @nr
BEGIN
SET @cmd = 'ALTER TABLE #Placa ADD Placa' + cast(@i as varchar) + ' varchar(10)'
EXEC (@cmd)
SET @i = @i + 1
END
Insert
#Placa (cod) Select Distinct cod From #Placas
--DECLARE @ini int, @fim int, @j int, @nreg int, @cod int
--DECLARE @placa varchar(10)--, @cmd varchar(1000)
Insert
Into #TmpPlacas Select cod, placa,
(Select Count(cod) From #Placas a Where a.cod = b.cod Group By Cod) nreg
From #Placas b
Order By cod;
Select
@fim = Max(RowId) From #TmpPlacas
Set
@ini = 1
Set
@j = 1
WHILE
(@ini <= @fim)
BEGIN
Select @nreg = nreg, @placa = placa, @cod = cod From #TmpPlacas Where RowId = @ini
If (@j <= @nreg)
Begin
Set @cmd = 'UPDATE #Placa SET Placa' + cast(@j as varchar) + ' = ' + '''' + @placa + '''' +
' WHERE cod = ' + cast(@cod as varchar)
EXEC (@cmd)
Set @j = @j + 1
If (@j > @nreg)
Set @j = 1
End
Set @ini = @ini + 1
END
Select
* From #Placa
--Select * From #Placas
--Select * From #TmpPlacas
--Truncate Table #TmpPlacas
Drop
Table #Placas
Drop
Table #Placa
Drop
Table #TmpPlacas