Получение столбцов, связанных с столбцом GROUP BY - PullRequest
1 голос
/ 04 сентября 2011

Я бы хотел сделать что-то вроде следующего.

SELECT aspnet_Users.UserName, aspnet_Membership.Email, count(*) as Activities
FROM aspnet_Users
     INNER JOIN Activities ON aspnet_Users.UserId = Activities.ActUserID
     INNER JOIN aspnet_Membership ON aspnet_Users.UserId = aspnet_Membership.UserId
     WHERE Activities.ActDateTime >= GETDATE()
     GROUP BY aspnet_Users.UserName
     ORDER BY Activities DESC

Но это дает мне ошибку.

Столбец aspnet_Membership.Email недопустим в списке выбора, поскольку он не содержится ни в статистической функции, ни в предложении GROUP BY.

Я немного понимаю ошибку. Я пытаюсь выбрать столбец, который не входит в группу.

Однако между aspnet_Membership.Email и aspnet_Users.UserId всегда будет взаимно-однозначное отношение. Так как бы я это реализовал?

Ответы [ 2 ]

3 голосов
/ 04 сентября 2011

Изменение:

GROUP BY aspnet_Users.UserId

На:

GROUP BY aspnet_Users.UserName, aspnet_Membership.Email

Не уверен, почему вы считаете необходимым указывать столбец UserId в группе, если вы не хотите его возвращать,или почему вы считаете, что не следует группировать по столбцам, которые do хотите вернуть.

0 голосов
/ 04 сентября 2011

чтобы выбрать столбец, он должен быть либо в группе по предложению, либо в агрегированном виде, вы можете рассмотреть возможность группировки по (aspnet_Users.UserName, aspnet_Membership.Email, aspnet_Users.UserId).

я думаю, это будет работать

...