如何使用join添加count列?

时间:2017-11-08 09:15:07

标签: mysql sql sql-server sql-server-2012

我已经运行此查询以在两个表之间加入,这没关系

SELECT 
TaskName AS TaskStatusTitle,
COUNT(TblTask.UserID),
CreateDate,
UserID,
TblProfiles.FullName AS [User Full Name] 
FROM Task.TblTask
RIGHT JOIN Users.TblProfiles 
ON Task.TblTask.UserID=Users.TblProfiles.UserrId
GROUP BY UserID`

然后我添加计数到这个查询,但我给了这个错误! 我该怎么办?

列' Task.TblTask​​.TaskName'在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。

4 个答案:

答案 0 :(得分:1)

使用聚合函数时,需要将所有列添加到group by子句中。喜欢这个

SELECT 
TaskName AS TaskStatusTitle,
COUNT(TblTask.UserID),
CreateDate,
UserID,
TblProfiles.FullName AS [User Full Name] 
FROM Task.TblTask
RIGHT JOIN Users.TblProfiles 
ON Task.TblTask.UserID=Users.TblProfiles.UserrId
GROUP BY 
UserID,TaskName ,CreateDate,    TblProfiles.FullName

答案 1 :(得分:0)

您将需要您在group by子句中选择的每一列。

SELECT 
TaskName AS TaskStatusTitle,
COUNT(TblTask.UserID),
CreateDate,
UserID,
TblProfiles.FullName AS [User Full Name] 
FROM Task.TblTask
RIGHT JOIN Users.TblProfiles 
ON Task.TblTask.UserID=Users.TblProfiles.UserrId
GROUP BY UserID,TaskName,CreateDate,TblProfiles.FullName

答案 2 :(得分:0)

使用group by子句处理聚合函数时,请确保已将所有列也包含在group by子句中。

试试这个:

SELECT 
TaskName AS TaskStatusTitle,
COUNT(TblTask.UserID),
CreateDate,
TblTask.UserID,
TblProfiles.FullName AS [User Full Name] 
FROM Task.TblTask
RIGHT JOIN Users.TblProfiles 
ON Task.TblTask.UserID=Users.TblProfiles.UserrId
GROUP BY TaskName,CreateDate,TblTask.UserID,TblProfiles.FullName;

答案 3 :(得分:0)

SELECT DISTINCT 
TaskName AS TaskStatusTitle,
COUNT(TblTask.UserID)OVER(PARTITION BY UserID) AS CNT ,
CreateDate,
UserID,
TblProfiles.FullName AS [User Full Name] 
FROM Task.TblTask
RIGHT JOIN Users.TblProfiles 
ON Task.TblTask.UserID=Users.TblProfiles.UserrId