Q:

Como puedo mostrar la cantidad de ordenes por año que ha realizado cada empleado en Mysql

como puedo mostrar la cantidad de ordenes por año que ha realizado cada empleado.
Estoy tratando de ejecutar esta sintaxis pero la misma no me arroja valor y no encuentro donde esta el error:
Select YEAR (o.OrderDate) 
Anio, e.FirstName +''+ e.LastName Empleado,
COUNT (o.OrderID) Ordenes
From dbo.Employees e inner join dbo.Orders O on e.EmployeeID=o.EmployeeID
Group by YEAR (o.OrderDate), e.FirstName+''+e.LastName

Dicha sintaxis la aplico en el entorno SQL y funciona pero la quiero ejecutar en MySql (base datos Northwind) no me lista los valores
No comprendo la diferencia por ello solicito de su ayuda.

A:

No puedes concatenar con el + en mysql, tienes que usar la función concat así:
Select YEAR (o.OrderDate) 
Anio, concat(e.FirstName,' ', e.LastName) Empleado,
COUNT (o.OrderID) Ordenes
From Employees e inner join Orders O on e.EmployeeID=o.EmployeeID
Group by YEAR (o.OrderDate), concat(e.FirstName,' ', e.LastName)

y sobre como hacer que se vea así:
employeeID | lastname | 1996 | 1997 | 1998 
-------------------------------------------
1          | Davolio. | 17   | 57   | 49

lo puedes hacer con subconsultas anidadas así:
Select e.EmployeeID, e.LastName, 
(select COUNT (o.OrderID) from Orders O 
where e.EmployeeID=o.EmployeeID and YEAR (o.OrderDate)=1996) as gestion_1996,
(select COUNT (o.OrderID) from Orders O 
where e.EmployeeID=o.EmployeeID and YEAR (o.OrderDate)=1997) as gestion_1997,
(select COUNT (o.OrderID) from Orders O 
where e.EmployeeID=o.EmployeeID and YEAR (o.OrderDate)=1998) as gestion_1998
From Employees e

Por cada columna de año tienes que añadirle una subconsulta con el año y no puedes ponerle un nombre que comienze con número por que te manda error, por eso le puese gestion_1996
(select COUNT (o.OrderID) from Orders O 
where e.EmployeeID=o.EmployeeID and YEAR (o.OrderDate)=1996) as gestion_1996

