JGH5
asked on
Running a query on every table in a database
Instead of running this query on one table at a time, how could it be changed to run on every table in a database? The table name in this query below is called [MembershipFeeds]:
SELECT 'SELECT '''+c.Table_Name+''' Table_Name, '''+c.Column_Name+''' Column_Name, '
+CASE WHEN c.Data_Type LIKE '%DATE%'
THEN 'CONVERT(VARCHAR(8),'+c.Co lumn_Name+ ',112)'
WHEN c.Data_Type LIKE '%INT' OR c.Data_Type IN ('DECIMAL','NUMERIC')
THEN 'CAST('+c.Column_Name+' AS VARCHAR)'
ELSE c.Column_Name
END
+' Column_Val, COUNT(1) QA_Freq_Cnt, CAST(CAST(COUNT(1) AS NUMERIC)/CAST(@RowCnt AS NUMERIC) AS NUMERIC(7,4)) QA_Freq_Pct'
+' FROM ['+t.Table_Schema+'].'+t.T able_Name
+' GROUP BY '+c.Column_Name
+' UNION ALL'
-- , ''''+column_name+''','
FROM INFORMATION_SCHEMA.Tables t
JOIN INFORMATION_SCHEMA.Columns c
ON t.Table_Catalog=c.Table_Ca talog
AND t.Table_Schema=c.Table_Sch ema
AND t.Table_Name=c.Table_Name
-- AND c.Column_Name IN ('Cms_Contract_Id','Cms_Es rd_Ind','C ms_Hospice _Ind','Cms _Lis_Copay _Category' ,'Cms_Medi caid_Ind', 'Gender'
-- ,'Group_Id','Group_Indicat or','Home_ State','In sured_plan _Id','Lang _Id','Mail to_State'
-- ,'Pbp_Id','Plan_Id','PW_Op tion','SRC _SYS_SRCID ','Termina tion_Cd')
WHERE t.Table_Name IN ('MembershipFeeds')
ORDER BY t.Table_Name,c.Column_Name
SELECT 'SELECT '''+c.Table_Name+''' Table_Name, '''+c.Column_Name+''' Column_Name, '
+CASE WHEN c.Data_Type LIKE '%DATE%'
THEN 'CONVERT(VARCHAR(8),'+c.Co
WHEN c.Data_Type LIKE '%INT' OR c.Data_Type IN ('DECIMAL','NUMERIC')
THEN 'CAST('+c.Column_Name+' AS VARCHAR)'
ELSE c.Column_Name
END
+' Column_Val, COUNT(1) QA_Freq_Cnt, CAST(CAST(COUNT(1) AS NUMERIC)/CAST(@RowCnt AS NUMERIC) AS NUMERIC(7,4)) QA_Freq_Pct'
+' FROM ['+t.Table_Schema+'].'+t.T
+' GROUP BY '+c.Column_Name
+' UNION ALL'
-- , ''''+column_name+''','
FROM INFORMATION_SCHEMA.Tables t
JOIN INFORMATION_SCHEMA.Columns
ON t.Table_Catalog=c.Table_Ca
AND t.Table_Schema=c.Table_Sch
AND t.Table_Name=c.Table_Name
-- AND c.Column_Name IN ('Cms_Contract_Id','Cms_Es
-- ,'Group_Id','Group_Indicat
-- ,'Pbp_Id','Plan_Id','PW_Op
WHERE t.Table_Name IN ('MembershipFeeds')
ORDER BY t.Table_Name,c.Column_Name
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Currently I think the code will give you the well-known error:
"
Column <column_name> is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
"