Выберите агрегатную функцию для Group BY в SQL Server - PullRequest
0 голосов
/ 14 декабря 2010

У меня такой запрос:

Select Count(*) as TotalCount, Object2_ID, Object_ID, Object_Description
from Table1 
inner join table2 on...  
Group BY Object2_ID, Object_ID

Я не могу выполнить этот запрос, потому что столбец Object_Description не находится в GROUP BY или не является агрегатной функцией.Object_Description - текстовый столбец.Мне нужно любое значение Object_Description.Теперь я использую MAX(Object_Description), потому что это дает мне правильные результаты, потому что Object_Description одинаково для каждой группы.

Я могу использовать MAX() или MIN() и т. Д. - я получу правильные результаты в моемquery.

Вопрос в том, каков наиболее эффективный способ сделать это?

Я думаю, что MAX() или MIN() приводит к небольшим накладным расходам.

1 Ответ

4 голосов
/ 14 декабря 2010

Вы можете получить описание объекта позже, после расчета количества (предполагается, что описание в таблице1 и вам нужно получить счет из таблицы2):

SELECT Object_Id, Object_Description, Qty
FROM
( 
  SELECT Object_Id, Count(*) Qty
  FROM Table2
  GROUP BY Object_Id
) t 
JOIN Table1 t2 on t2.Object_Id = t.Object_Id
...