Группировка по внутреннему объединению дважды - сортировка по возрастанию - PullRequest
0 голосов
/ 07 июля 2019

Практика SQL и хотел отсортировать результаты моего запроса - необработанный запрос работает нормально, однако, когда сгруппированы по нему не удается выполнить.

Использование SSMS '18 - использование базы данных AdventureWorks.

SELECT 
    pp.BusinessEntityID,
    pp.FirstName,
    pp.MiddleName,
    pp.LastName,
    ppw.PasswordHash,
    ppw.PasswordSalt,
    pph.PhoneNumber
FROM
    Person.Person AS pp
INNER JOIN
    Person.Password AS ppw ON pp.BusinessEntityID = ppw.BusinessEntityID
INNER JOIN
    Person.PersonPhone AS pph ON pp.BusinessEntityID = pph.BusinessEntityID
GROUP BY 
    pp.BusinessEntityID ASC, pp.FirstName, pp.MiddleName, pp.LastName, 
    ppw.PasswordHash, ppw.PasswordSalt, pph.PhoneNumber;

Результат ошибки:

Сообщение 156, Уровень 15, Состояние 1, Строка 21
Неверный синтаксис рядом с ключевым словом «ASC».

Код будет выполняться, если ключевое слово ASC будет удалено и сгруппировано по BusinessEntityID по убыванию. Я скучаю по какой-то теории здесь?

1 Ответ

1 голос
/ 07 июля 2019

это будет порядок по группам

SELECT 
 pp.BusinessEntityID,
 pp.FirstName,
 pp.MiddleName,
 pp.LastName,
 ppw.PasswordHash,
 ppw.PasswordSalt,
 pph.PhoneNumber
FROM
Person.Person as pp
    inner join Person.Password as ppw on  pp.BusinessEntityID=ppw.BusinessEntityID
    inner join Person.PersonPhone as pph on pp.BusinessEntityID=pph.BusinessEntityID
order by  pp.BusinessEntityID ASC, pp.FirstName, pp.MiddleName, pp.LastName, ppw.PasswordHash, ppw.PasswordSalt, pph.PhoneNumber;

но если вы хотите использовать группу к тому времени, это будет

SELECT 
     pp.BusinessEntityID,
     pp.FirstName,
     pp.MiddleName,
     pp.LastName,
     ppw.PasswordHash,
     ppw.PasswordSalt,
     pph.PhoneNumber
    FROM
    Person.Person as pp
        inner join Person.Password as ppw on  pp.BusinessEntityID=ppw.BusinessEntityID
        inner join Person.PersonPhone as pph on pp.BusinessEntityID=pph.BusinessEntityID
    group  by  pp.BusinessEntityID , pp.FirstName, pp.MiddleName, pp.LastName, ppw.PasswordHash, ppw.PasswordSalt, pph.PhoneNumber;

но отличное лучше, если нет агрегации, группа по для агрегации

...