Я бы ожидал, что это сработает, потому что T1.a и T2.a объединены
Это имеет смысл, но, к сожалению: нет. SQL Сервер видит два разных неагрегированных столбца в предложении SELECT
и запрашивает их также в предложении GROUP BY
:
SELECT T1.a, T2.a
FROM T1
JOIN T2 ON T1.a = T2.a
GROUP BY T1.a, T2.a
С другой стороны, поскольку вы присоединяясь к этим столбцам, вы также знаете, что оба имеют одинаковое значение, поэтому зачем вам выводить оба в наборе результатов?
SELECT T1.a
FROM T1
JOIN T2 ON T1.a = T2.a
GROUP BY T1.a
Некоторые базы данных поддерживают синтаксис USING
для объединений, что устраняет неоднозначность имена столбцов, если оба одинаковы, но не SQL Сервер:
SELECT a
FROM T1
JOIN T2 ON USING(a)
GROUP BY a