Ошибка, которую вы видите, является распространенной, и это происходит потому, что когда вы указываете GROUP BY x_id
, вы говорите SQL Server возвращать одну запись для каждого значения x_id
.Однако, когда вы выбираете y
, неясно, , какое одно из многих возможных значений, которые вы хотите использовать.Следовательно, это приводит к ошибке.Один правильный подход будет использовать ROW_NUMBER
:
SELECT TOP 1 WITH TIES x_id, y, z_id, a, b, c
FROM #temp
ORDER BY ROW_NUMBER() OVER (PARTITION BY x_id ORDER BY z_id DESC);