Seleccionar distintos valores de una columna múltiple de una tabla con su recuento

Quiero seleccionar valores distintos de varias columnas de la misma tabla con su ejemplo de recuento enter image description here

y la salida debería ser así

enter image description here

Obtenga todos los valores de columna en una fila y encuentre el conteo

SERVIDOR SQL

;WITH CTE AS ( SELECT COL1 Name FROM YOURTABLE UNION ALL SELECT COL2 FROM YOURTABLE UNION ALL SELECT COL3 FROM YOURTABLE UNION ALL SELECT COL4 FROM YOURTABLE UNION ALL SELECT COL6 FROM YOURTABLE UNION ALL SELECT COL7 FROM YOURTABLE ) SELECT DISTINCT Name,COUNT(Name) OVER(PARTITION BY Name) [COUNT] FROM CTE 

MYSQL

 SELECT Name,COUNT(*) [COUNT] ( SELECT COL1 Name FROM #TEMP UNION ALL SELECT COL2 FROM #TEMP UNION ALL SELECT COL3 FROM #TEMP UNION ALL SELECT COL4 FROM #TEMP UNION ALL SELECT COL6 FROM #TEMP UNION ALL SELECT COL7 FROM #TEMP )TAB GROUP BY Name 

Dado que OP dice en su comentario que usa MYSQL esto debería funcionar

 SELECT data,COUNT(data) FROM ( SELECT COL1 data FROM tableso UNION ALL SELECT COL2 FROM tableso UNION ALL SELECT COL3 FROM tableso UNION ALL SELECT COL4 FROM tableso UNION ALL SELECT COL6 FROM tableso UNION ALL SELECT COL7 FROM tableso ) finaltable group by data; 

FIDDLE SQL: http://sqlfiddle.com/#!2/1f8cf/10

No creo que la respuesta aceptada funcione en MYSQL

ACTUALIZAR:

El operador ha cambiado de opinión sobre la database (a MSSQL) y la respuesta aceptada tiene ambas versiones db

Dado que también está utilizando el Sql Server , le sugerirá de esta manera

Utilice el Table valued constructor con Table valued constructor para convertir las columnas en filas y luego count el name

Esto evitará la exploración de múltiples tablas.

 SELECT name, [count]=Count(1) FROM yourtable CROSS apply (VALUES (col1),(COL2),(col3),(col4),(COL6),(col7)) cs (name) GROUP BY name 

Nota: Esto no funcionará en Mysql

DEMO SQLFIDDLE