IF OBJECT_ID('tempdb..#test_data_table','U') IS NOT NULL DROP TABLE #test_data_tableIF OBJECT_ID('tempdb..#test_count_table','U') IS NOT NULL DROP TABLE #test_count_tableSELECT 'Data' C1,'Data' C2,'Data' C3,1 C4 INTO #TEST_DATA_TABLE UNION ALLSELECT 'Data','Data','Data',1 UNION ALLSELECT 'Data','','Data',0 UNION ALLSELECT 'Data','Data','',1 UNION ALLSELECT '','Data','Data',0 UNION ALLSELECT '','','Data',1 UNION ALLSELECT '','Data','',1 UNION ALLSELECT '','','',0--One way (creates a result table)SELECTSUM(CASE WHEN C1!='' THEN 1 ELSE 0 END) C1Count,SUM(CASE WHEN C2!='' THEN 1 ELSE 0 END) C2Count,SUM(CASE WHEN C3!='' THEN 1 ELSE 0 END) C3Count,SUM(CASE WHEN C4!=0 THEN 1 ELSE 0 END) C4CountINTO #test_count_tableFROM #test_data_tableSELECT 'C1Count',C1CountFROM #test_count_tableUNIONSELECT 'C2Count',C2CountFROM #test_count_tableUNIONSELECT 'C3Count',C3CountFROM #test_count_tableUNIONSELECT 'C4Count',C4CountFROM #test_count_table--Another way (direct)SELECT 'C1Count',COUNT(C1)FROM #test_data_tableWHERE C1!=''UNIONSELECT 'C2Count',COUNT(C2)FROM #test_data_tableWHERE C2!=''UNIONSELECT 'C3Count',COUNT(C3)FROM #test_data_tableWHERE C3!=''UNIONSELECT 'C4Count',COUNT(C4)FROM #test_data_tableWHERE C4!=0
SELECT U.Name, U.ValueFROM ( SELECT C1Count = COUNT(ASCII(C1)), C2Count = COUNT(ASCII(C2)), C3Count = COUNT(ASCII(C3)), C4Count = COUNT(NULLIF(C4, 0)) FROM #test_data_table ) SUNPIVOT ( Value FOR Name IN (C1Count, C2Count, C3Count, C4Count) ) U;