techIT.ro Do we have a problem? Let's tech it!    












Daca ai impresia ca educatia e scumpa,
atunci încearca sa vezi cum e ignoranta.
Andy McIntyre









Home  |  Dictionar IT  |  Download  |  Forum  |  Despre noi  |  Contact

Exemplu de utilizare de SQL generat: mutarea unor rânduri (înregistrări) pe coloane

În exemplul de mai jos se foloseşte un cursor pentru a parcurge rândurile dintr-un tabel, unul câte unul, şi generearea unui string care va fi ulterior executat pentru unplerea unui tabel temporar cu datele din tabel, dar având schimbată structura - rândurile din tabelul iniţial devin coloane. În tabelul rezultat vor fi atâtea coloane câte rânduri se găsesc în tabelul iniţial.


Tabelul utilizat în exemplu

-- crearea tabelei Item
CREATE TABLE Item
(
[ID] INT PRIMARY KEY IDENTITY (1, 1),
[Name] NVARCHAR (100),
[Description] NVARCHAR (200))

----------------------------------------------
--  Exemplu: transformarea randurilor in coloane
--  utilizand cursoare si tabele temporare
----------------------------------------------

-- declarare variabile interne

DECLARE @Name NVARCHAR(100)
DECLARE @Description NVARCHAR(200)

DECLARE @sql AS VARCHAR(8000)

-- creare tabel temporar
CREATE TABLE #temp ([ID] INT PRIMARY KEY IDENTITY)

-- declarare cursor
DECLARE curs CURSOR FOR
SELECT [Name], [Description]
FROM Item
ORDER BY [Name]

-- deschidere cursor
OPEN curs

-- preluarea primei inregistrari
FETCH NEXT FROM curs
INTO @Name, @Description

-- navigarea prin setul de inregistrari
WHILE @@FETCH_STATUS = 0
BEGIN
     SET @sql = 'ALTER TABLE #temp ADD [' + @Name + '] NVARCHAR(100)'
     EXECUTE (@sql)

     SET @sql = 'INSERT INTO #temp (' + @Name + ') VALUES (''' + @Description + ''')'
     EXECUTE (@sql)

     FETCH NEXT FROM curs
     INTO @Name, @Description
END

-- inchidere cursor
CLOSE curs
DEALLOCATE curs

SELECT * FROM #temp
-- ştergere tabel temporar
DROP TABLE #temp

techit.ro





Colecţia:  Exemple de cod

Articolul precedent:  Utilizarea unui timer în JavaScript
Articolul următor:  Exemplu de utilizare a tranzacţiilor în T-SQL



  


  Adauga un comentariuSpune-ti parerea despre acest articol!