Transpozycja Tabeli czyli taki tam mały pseudo Pivot

Przedstawiam kod do transpozycji tabeli. Kiedyś potrzebowałem coś podobnego pod MS SQL Server 2000. Chciałem użyć Pivota ale ….to nie ta wersja.

Proszę o uwagi i ewentualne propozycje zmian.

CREATE TABLE #t("Nazwa" varchar(20),
 "Wartosc" int);

INSERT INTO #t VALUES ('KOLUMNA1',2);
INSERT INTO #t VALUES ('KOLUMNA2',4);
INSERT INTO #t VALUES ('KOLUMNA3',6);
INSERT INTO #t VALUES ('KOLUMNA4',8);

SELECT * FROM #t;
GO
DECLARE @sql AS NVARCHAR(2000)
DECLARE @sql2 AS NVARCHAR(2000)
DECLARE @nazwa AS nvarchar(30)
DECLARE @wartosc AS int
DECLARE @licznik INT
DECLARE @zn char(1)

SET @sql='create table db ('
SET @sql2= 'insert into db values ('
SET @licznik=0
SET @zn=CHAR(39);

DECLARE c1 CURSOR FOR
SELECT    Nazwa, Wartosc FROM #t  

OPEN c1

FETCH c1 INTO @nazwa,@wartosc
WHILE (@@fetch_status = 0)
 BEGIN
 SET @licznik=@licznik+1
 if @licznik>1
 BEGIN
 SET @sql=@sql+','   
 SET @sql2=@sql2+','  
 END     
 SET @sql= @sql +'"Nazwa'+ cast(@licznik AS nvarchar(3))+'" varchar(30), "Wartosc'+cast(@licznik AS nvarchar(3))+'" int'
 SET @sql2=@sql2+@zn+ @nazwa+@zn+','+CAST(@wartosc AS varchar(10))  
 FETCH c1 INTO  @nazwa,@wartosc
 END
 SET @sql=@sql+')'
 SET @sql2=@sql2+')'

CLOSE c1
DEALLOCATE c1

print @sql
print @sql2

EXEC sp_executesql @sql
EXEC sp_executesql @sql2
SELECT * FROM db

DROP TABLE #t
DROP TABLE db

DBBS