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