-- Create the Temp Table in CaseLogistix Central database to hold the column name results.

USE [CaseLogistix Central]
Go

CREATE TABLE ColumnCounts
(   [ID] [int] IDENTITY(1,1) NOT NULL,   -- Identity field
       [LibraryName] nvarchar(1500) null,
       [ColumnName] varchar(500),
       [PopulatedCount] int NULL,               -- Field Populated Count.
       [NullCount] int NULL,                           -- Field Null Count.
       CONSTRAINT Libraries_pk Primary Key (ID)
       );
GO

-- Populate the LibraryName and ColumnNames into the ColumnCounts table
USE [CaseLogistix Central]
DECLARE @name varchar(500)
DECLARE @library varchar(500)
DECLARE @SQL varchar (4000)
DECLARE DBCursor CURSOR FOR
SELECT LibraryName
FROM tblLibraries
WHERE LibraryName not like N'Gil Bower%' and libraryname in (select name from sys.databases)
ORDER BY LibraryName
OPEN DBCursor
fetch next from DBCursor into @name

while @@FETCH_STATUS = 0
BEGIN
SET @SQL = 'USE [' + @name + '] ' 
SET @SQL = @SQL + 'INSERT INTO [CaseLogistix Central].[dbo].[ColumnCounts] (LibraryName, ColumnName)'
SET @SQL = @SQL + 'SELECT ''' + @name + ''', sColumnName FROM [tblTableColumnInfo] WHERE sColumnName not in(''FileName'',''Last Updated'', ''Last Updated By'', ''Page Count'', ''Reserved1'',''Reserved2'',''Reserved3'',''Reserved4'',''Reserved5'',''Reserved6'',''Reserved7'', ''Reserved8'',''Reserved9'',''Reserved10'',''Reserved11'',''Reserved12'',''Reserved13'',''Reserved14'', ''Reserved15'',''Reserved16'',''Reserved17'',''Reserved18'',''Reserved19'',''Reserved20'',''Reserved21'',''Reserved22'',''Reserved23'',''Reserved24'',''Reserved25'',''Reserved26'',''Reserved27'',''Reserved28'',''ReservedDocWork'', ''ReservedOriginalGUID'', ''Updated By User ID'', ''Updated Computer Name'',''Updated Domain Name'', ''Updated Domain User'', ''Updated IP'', ''Master Last Updated'', ''MasterGUID'',''ReservedUserWork'', ''ID'', ''Redaction Codes'', ''Tags'', ''Tabs'', ''Issues'', ''Note Count'', ''My Note Count'', ''Tag Count'', ''Attachment Count'' ) '

EXEC(@SQL)

fetch next from DBCursor into @name
END 
CLOSE DBCursor
deallocate DBCursor


-- Populate the PopulatedCount and NullCount columns for each row in ColumnCounts
DECLARE @SQLUPDATE varchar (4000)
DECLARE @ID varchar (100)
DECLARE DBCursorUPDATE CURSOR FOR
SELECT ID, '[' + LibraryName + ']', ColumnName 
from [CaseLogistix Central].[dbo].[ColumnCounts]

OPEN DBCursorUPDATE
fetch next from DBCursorUpdate into @id,@library,@name

while @@FETCH_STATUS = 0
BEGIN
SET @SQLUPDATE = 'USE [CaseLogistix Central] '
SET @SQLUPDATE = @SQLUPDATE + ' UPDATE [ColumnCounts] '
SET @SQLUPDATE = @SQLUPDATE + ' SET PopulatedCount = (SELECT COUNT(*) FROM ' + @library + '.dbo.vwLiveDocuments where [' + @name +'] is not null),'
SET @SQLUPDATE = @SQLUPDATE + ' NullCount = (SELECT COUNT(*) FROM ' + @library + '.dbo.vwLiveDocuments where [' + @name +'] is null)'
SET @SQLUPDATE = @SQLUPDATE + ' WHERE ID = ''' + @id + '''' 

EXEC(@SQLUPDATE)

fetch next from DBCursorUPDATE into @id,@library,@name
END 
CLOSE DBCursorUPDATE
deallocate DBCursorUPDATE

-- Select the results and then delete the table.
SELECT * FROM [CaseLogistix Central].[dbo].[ColumnCounts]

-- Drop the ColumnCounts table after all the reults have been generated. 
Drop table [CaseLogistix Central].[dbo].[ColumnCounts]

