SELECT
CASE WHEN COUNT(col1) = COUNT(*) AND MIN(col1) = MAX(col1) THEN MIN(col1) END AS col1,
CASE WHEN COUNT(col2) = COUNT(*) AND MIN(col2) = MAX(col2) THEN MIN(col2) END AS col2,
...
FROM yourtable
Вы должны разрешить NULL в столбце:
- COUNT (*) считает их
- COUNT (col1) не считает их
То есть столбцы со смесью As и NULL не являются одним значением.MIN и MAX оба дали бы A, потому что они игнорировали NULL.
Edit:
- удалил DISTINCT, чтобы получить одинаковые значения для проверки NULL
- добавлена проверка MIN / MAX(согласно Марк Байерс удалил ответ), чтобы проверить уникальность