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_
-- 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)
/*
SCRIPT: Distinct and NULL Counts
*/
SET NOCOUNT ON;
DECLARE @SCHEMA_NAME VARCHAR(128) = 'dbo'; DECLARE @TABLE_NAME VARCHAR(128) = 'CAQH_DataSummary_
-- 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
Post a Comment