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.
-- 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
Spune-ti parerea despre acest articol!
|
|
|
Colecţiile techIT.ro
Căutare după tag:
Topul celor mai citite articole
Spune-ti parerea despre acest articol!