我正在使用2个表,Orders
和Employees
。两者都有雇员的ID。我需要获得每个单独员工完成的订单总数。
我希望我的结果是这样:全名,总订单。
我能得到的是:员工ID,总订单。
即使使用CAST或CONVERT,我也无法将Order.EmployeeID
与Employees.EmployeeID
连接起来。
我可以对查询名称进行单独的查询,并按员工ID显示订单,但是我无法确定如何进行子查询以为我提供每位员工的全名及其订单总数。
SELECT
[dbo].[Orders].EmployeeID AS Seller,
COUNT(OrderID) AS Amount
FROM
[dbo].[Orders]
JOIN
[dbo].[Employees] ON [dbo].[Employees].EmployeeID = [dbo].[Orders].EmployeeID
GROUP BY
[dbo].[Orders].EmployeeID;
我希望得到以下结果:
|Name |TotalOrders|
+------------+-----------+
|Johnny Bravo| 120 |
但是当前结果是:
|ID|TotalOrders|
+--+-----------+
|1 |120 |
答案 0 :(得分:2)
简单地串联它们,例如这样
SELECT
o.EmployeeID AS Seller,
CONCAT(e.FirstName + ' ', e.LastName) AS FullName,
COUNT(o.OrderID) AS Amount
FROM
[dbo].[Orders] o
JOIN
[dbo].[Employees] e ON o.EmployeeID = e.EmployeeID
GROUP BY
o.EmployeeID, e.FirstName, e.LastName
您也可以这样做
(e.FirstName + ' ' + e.LastName) as FullName
但是请注意,当其中一列为NULL
时,结果也将为NULL
那你就必须这样做
(isnull(e.FirstName, '') + ' ' + isnull(e.LastName, '')) as FullName
因此,CONCAT
函数更简单,它将为您将NULL
值转换为空字符串。
另请参阅此Documentation
编辑
正如肖恩·兰格(Sean Lange)所述,最好这样做
Concat(e.FirstName + ' ', e.LastName) as FullName,
代替
Concat(e.FirstName, ' ', e.LastName) as FullName,
因为这种方式,当名字为null时,您将没有前导空格
答案 1 :(得分:0)
SELECT [dbo].[Orders].EmployeeID AS Seller,Concat ([Orders].FirstName,[Orders].Lastname) fullname,
COUNT(OrderID) AS Amount
FROM [dbo].[Orders]
JOIN [dbo].[Employees] ON [dbo].[Employees].EmployeeID = [dbo].[Orders].EmployeeID
GROUP BY [dbo].[Orders].EmployeeID,[Orders].FirstName,[Orders].Lastname;