Distinct and NULL Counts

 /*

 

SCRIPT: Distinct and NULL Counts

 

*/

 

 

 

SET NOCOUNT ON;

 

DECLARE @SCHEMA_NAME VARCHAR(128) = 'dbo';

DECLARE @TABLE_NAME VARCHAR(128) = 'CAQH_DataSummary_ProviderExtract';

 

-- set query results to text

 

SELECT

  ';WITH CTE AS (' + CHAR(13) + CHAR(10) +

  'SELECT' + CHAR(13) + CHAR(10) ;

 

 

SELECT

  'COUNT(DISTINCT [' +

   COLUMN_NAME + ']) AS [DISTINCT_' + COLUMN_NAME + '], ' +

  'SUM(CASE WHEN [' + COLUMN_NAME + ']  IS NULL THEN 1 ELSE 0 END) AS [NULL_' + COLUMN_NAME + '],' +

  CHAR(13) + CHAR(10)

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_SCHEMA = @SCHEMA_NAME

AND TABLE_NAME = @TABLE_NAME

AND DATA_TYPE <> 'xml';

 

SELECT

  'COUNT(*) [ROW_COUNT]' + CHAR(13) + CHAR(10) +

  'FROM ' + @SCHEMA_NAME + '.' + @TABLE_NAME  + CHAR(13) + CHAR(10) +

  ')' + CHAR(13) + CHAR(10) ;

 

SELECT

  'SELECT ' +

  '''' + TABLE_NAME  + '''' + ' AS TABLE_NAME,' +

  '''' + COLUMN_NAME + '''' + ' AS COLUMN_NAME,' +

  '[DISTINCT_' + COLUMN_NAME + '] AS [DISTINCT_COUNT], ' +

  '[NULL_' + COLUMN_NAME + '] AS [NULL_COUNT], ' +

  '''' + CASE DATA_TYPE

 WHEN 'varchar' THEN CONCAT('VARCHAR(',  iif(CHARACTER_MAXIMUM_LENGTH = -1, 'max', convert(varchar, CHARACTER_MAXIMUM_LENGTH)), ')')

 WHEN 'nvarchar' THEN CONCAT('NVARCHAR(',  iif(CHARACTER_MAXIMUM_LENGTH = -1, 'max', convert(varchar, CHARACTER_MAXIMUM_LENGTH)), ')')

 WHEN 'char' THEN CONCAT('CHAR(',  CHARACTER_MAXIMUM_LENGTH, ')')

 WHEN 'nchar' THEN CONCAT('NCHAR(',  CHARACTER_MAXIMUM_LENGTH, ')')

 --WHEN 'varchar' THEN 'VARCHAR(' + CONVERT(VARCHAR(30), CHARACTER_MAXIMUM_LENGTH) + ')'

 --WHEN 'nvarchar' THEN 'NVARCHAR('  + CONVERT(NVARCHAR(30), CHARACTER_MAXIMUM_LENGTH) + ')'

 --WHEN 'char' THEN 'CHAR(' + CONVERT(VARCHAR(30), CHARACTER_MAXIMUM_LENGTH) + ')'

 --WHEN 'nchar' THEN 'NCHAR('  + CONVERT(NVARCHAR(30), CHARACTER_MAXIMUM_LENGTH) + ')'

 ELSE UPPER(DATA_TYPE) END + '''' + ' AS COLUMN_TYPE, ' +

  '''' +  '''' + ' AS COMMENTS ' +

  ' FROM CTE UNION ALL' +

  CHAR(13) + CHAR(10)

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_SCHEMA = @SCHEMA_NAME

AND TABLE_NAME = @TABLE_NAME

AND DATA_TYPE <> 'xml';

 

SELECT

  'SELECT ' +

  '''' + 'EOF' + '''' + ',' +

  '''' + 'EOF' + '''' + ',' +

  '0, 0,' + '''' + 'EOF' + '''' + + ',' +

   '''' + 'EOF' + '''' + CHAR(13) + CHAR(10)



Comments

Popular posts from this blog

Using sp_executesql with OPENQUERY

Executing Remote Queries Safely and Efficiently with sp_executesql