• Did ALZDBA’s post from the other forum give you the result you wanted?

    Same code below but with the distinct removed, will eliminate nulls and what you have left is count of non null values in each column.

    SELECT CASE t1.[ORDINAL_POSITION] WHEN 1 THEN 'SELECT ' ELSE ' , ' end

    + ' count( ['+ t1.[COLUMN_NAME] + '] ) as [Count_' + t1.[COLUMN_NAME] + ']'

    + CASE t1.[ORDINAL_POSITION] WHEN t2.[MAX_ORDINAL_POSITION] THEN ' from [' + t1.[TABLE_SCHEMA] + '].[' + t1.[TABLE_NAME] + '] ;' ELSE ' ' end

    FROM [INFORMATION_SCHEMA].[COLUMNS] t1

    INNER JOIN

    ( SELECT [TABLE_NAME], [TABLE_SCHEMA], MAX([ORDINAL_POSITION]) AS MAX_ORDINAL_POSITION

    FROM [INFORMATION_SCHEMA].[COLUMNS]

    GROUP BY [TABLE_NAME], [TABLE_SCHEMA]

    )t2

    ON t1.[TABLE_NAME] = t2.[TABLE_NAME]

    AND t1.[TABLE_SCHEMA] = t2.[TABLE_SCHEMA]

    --WHERE t1.[TABLE_NAME] = 'mytable'

    ORDER BY t1.[TABLE_NAME], t1.[TABLE_SCHEMA], t1.[ORDINAL_POSITION]