Поскольку вы хотите сгруппировать по column1
, один из способов узнать, имеет ли column2
все одинаковые значения, - проверить, если max(column2) = min(column2)
, поэтому это должно работать:
select column1, case
when max(column2) = min(column2) then max(column2)
else null
end as col2
from tabletest
group by column1;
Редактировать
Если ваш column2
не может принять значения null
, тогда приведенный выше запрос в порядке, в противном случае вам понадобится следующий запрос для обработки случаев, когда column2
равен null
:
select t.column1, case
when (select max(1) from tabletest where column2 is null and column1 = t.column1) = 1 then null
when max(t.column2) = min(t.column2) then max(t.column2)
else null
end as col2
from tabletest t
group by t.column1;
Единственное отличие состоит в том, что нам нужно добавить условие case
, чтобы охватить случай, когда column2 is null