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を混在させた列は1つの値ではありません。 MINとMAXはどちらもNULLを無視するためAを与えます。
編集:
- DISTINCTを削除して、NULLチェックでカウントを同じにする
- 一意性をチェックするためにMIN/MAXチェックを追加しました(Mark Byersの削除された回答ごと)