Skip to content

Instantly share code, notes, and snippets.

@Nisden
Created April 17, 2012 13:05
Show Gist options
  • Save Nisden/2405840 to your computer and use it in GitHub Desktop.
Save Nisden/2405840 to your computer and use it in GitHub Desktop.
-- vars
DECLARE @tableName NVARCHAR(255), @columnName NVARCHAR(255), @prevTable NVARCHAR(255), @prevColumn NVARCHAR(255), @sql NVARCHAR(255)
-- Start
DECLARE tablesCurser CURSOR FAST_FORWARD READ_ONLY FOR
SELECT name FROM sys.tables WHERE is_ms_shipped = 0
OPEN tablesCurser
FETCH NEXT FROM tablesCurser INTO @tableName
WHILE @@FETCH_STATUS = 0
BEGIN
-- Table Curser logic
PRINT @tableName
-- Column Cursor
DECLARE columnCursor CURSOR FAST_FORWARD READ_ONLY FOR
SELECT sys.columns.name FROM sys.columns
INNER JOIN sys.tables ON sys.columns.object_id = sys.tables.object_id
WHERE system_type_id IN (167, 231) AND sys.tables.name = @tableName
OPEN columnCursor
FETCH NEXT FROM columnCursor INTO @columnName
WHILE @@FETCH_STATUS = 0
BEGIN
-- Column Cursor logic
-- PRINT '--' + @columnName
IF (@prevColumn IS NOT NULL AND @tableName IS NOT NULL)
BEGIN
-- Move data from current into prev table
SELECT @sql = 'INSERT INTO [' + @prevTable + '] ([' + @prevColumn + ']) SELECT ISNULL([' + @columnName + '], '''') FROM [' + @tableName + ']'
EXEC (@sql)
END
-- Set prev vars
SET @prevColumn = @columnName
SET @prevTable = @tableName
FETCH NEXT FROM columnCursor INTO @columnName
END
CLOSE columnCursor
DEALLOCATE columnCursor
-- End Column Cursor
-- Next
FETCH NEXT FROM tablesCurser INTO @tableName
END
-- Dispose
CLOSE tablesCurser
DEALLOCATE tablesCurser
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment