我有一个包含以下字段的生产力表
EmpName Client Sclient BillGrp WkdDate
KK Parallon Atlanta IP 12-Jul-16
KK Kiwitek Ozark OP 11-Jul-16
JJ Parallon Atlanta OP 10-Jul-16
JJ Kiwitek Ozark IP 11-Jul-16
我需要这样的东西
EmpName Client BillGrp Count
KK Parallon IP 2
JJ Parallon OP 2
简而言之,每个EmpName只有一个条目,而Client和BillGrp将返回该EmpName的最大条目,其中包含Count Field中的总计数
答案 0 :(得分:1)
您声明这是工作查询,但您是否看到where子句有任何问题?您正在冗余地重复连接谓词,第二个谓词也可以被视为连接的一部分。
如果在group by子句中包含EmpName,请求MAX(EmpName)有什么意义?
SELECT
MAX(EmpName)
, MAX(P.Client)
, MAX(P.BillGrp)
, Target
, COUNT(*)
FROM Productivity P
LEFT JOIN Targets T ON P.Client = T.Client
WHERE P.Client = T.Client
AND P.BillGrp = T.BillGrp
GROUP BY
P.EmpName
, T.Target
select子句的非聚合列应该在group by子句中列出(反之亦然),即:
SELECT
T.Target
, MAX(EmpName)
, MAX(P.Client)
, MAX(P.BillGrp)
, COUNT(*)
FROM Productivity P
LEFT JOIN Targets T ON P.Client = T.Client
AND P.BillGrp = T.BillGrp
GROUP BY
T.Target
答案 1 :(得分:0)
SELECT EmpName, Client, BillGrp, COUNT(*) AS `count`
FROM table
GROUP BY EmpName