INSERT INTO #ColumnValueCounts
(TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME,
COLUMN_NAME, ORDINAL_POSITION, DATA_TYPE,
NON_BLANK_COUNT)
SELECT
C.TABLE_CATALOG, C.TABLE_SCHEMA, C.TABLE_NAME,
C.COLUMN_NAME, C.ORDINAL_POSITION, DATA_TYPE,
ISNULL(NBC.NonBlankCount, 0)
FROM INFORMATION_SCHEMA.COLUMNS C
LEFT JOIN (
SELECT NB.ORDINAL_POSITION, COUNT(*) AS NonBlankCount
FROM [dbo].[Table1] T
CROSS APPLY (
SELECT 0 AS ORDINAL_POSITION WHERE 1 = 0 -- Empty result to seed the union
UNION ALL SELECT 1 WHERE 1 = 1 AND DATALENGTH(T.[col1]) > 0 -- [col1] [varchar] NOT NULL
UNION ALL SELECT 2 WHERE 1 = 1 AND T.[col2] IS NOT NULL AND DATALENGTH(T.[col2]) > 0 -- [col2] [varchar]
) NB
GROUP BY NB.ORDINAL_POSITION
) NBC
ON NBC.ORDINAL_POSITION = C.ORDINAL_POSITION
WHERE C.TABLE_SCHEMA = N'dbo'
AND C.TABLE_NAME = N'Table1'
ORDER BY C.ORDINAL_POSITION;
INSERT INTO #ColumnValueCounts
(TABLE_CATALOG, TABLE_SCHEMA, TABLE_NAME,
COLUMN_NAME, ORDINAL_POSITION, DATA_TYPE,
NON_BLANK_COUNT)
SELECT
C.TABLE_CATALOG, C.TABLE_SCHEMA, C.TABLE_NAME,
C.COLUMN_NAME, C.ORDINAL_POSITION, DATA_TYPE,
ISNULL(NBC.NonBlankCount, 0)
FROM INFORMATION_SCHEMA.COLUMNS C
LEFT JOIN (
SELECT NB.ORDINAL_POSITION, COUNT(*) AS NonBlankCount
FROM [Some Schema].[Table Ω] T
CROSS APPLY (
SELECT 0 AS ORDINAL_POSITION WHERE 1 = 0 -- Empty result to seed the union
UNION ALL SELECT 1 WHERE 1 = 1 AND T.[col α] <> '1900-01-01' -- [col α] [datetime] NOT NULL
UNION ALL SELECT 2 WHERE 1 = 1 AND T.[col β] IS NOT NULL -- [col β] [int]
UNION ALL SELECT 3 WHERE 1 = 1 -- [col γ] [int] NOT NULL
) NB
GROUP BY NB.ORDINAL_POSITION
) NBC
ON NBC.ORDINAL_POSITION = C.ORDINAL_POSITION
WHERE C.TABLE_SCHEMA = N'Some Schema'
AND C.TABLE_NAME = N'Table Ω'
ORDER BY C.ORDINAL_POSITION;
5 rows affected