Объединить несколько строк с одинаковым значением в одну строку - PullRequest
0 голосов
/ 08 ноября 2018

Я делаю упражнение с базой данных Northwind, и я написал следующий запрос:

select 
    Employees.EmployeeID, year(Orders.OrderDate) as Year, 
    count(Employees.EmployeeID) as 'Total Orders'
from  
    Orders 
join 
    Employees on Orders.EmployeeID = Employees.EmployeeID
where 
    year(Orders.OrderDate) = '1996'
group by 
    Employees.EmployeeID, Orders.OrderDate
order by 
    Employees.EmployeeID asc

Я получаю следующий вывод:

EmployeeID | Year | Total Orders
-----------+------+--------------
1          |1996  | 1
1          |1996  | 1
1          |1996  | 2
1          |1996  | 1
1          |1996  | 1
....

Я думаю, что проблема в year(Orders.OrderDate) части, потому что исходная дата имеет месяц, день, ...

Любая помощь с очень высоко ценится!

Ответы [ 2 ]

0 голосов
/ 08 ноября 2018

всякий раз, когда используется предложение group by, мы должны использовать все поля без псевдонима в предложении select, как оно есть, кроме агрегатных операций.

В вашем случае предложение group by должно быть

группировка по Employees.EmployeeID, год (Orders.OrderDate)

0 голосов
/ 08 ноября 2018

Попробуйте:

group by Employees.EmployeeID, year(Orders.OrderDate)

Насколько я знаю, вы можете группировать по функции.

Редактировать: Кроме того, вы, как правило, не можете группировать по псевдониму, представляющему функцию, если она не будет оценена первой в подзапросе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...