SQL组多列和计数

时间:2016-07-10 12:21:17

标签: sql ms-access

我有一个包含以下字段的生产力表

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中的总计数

2 个答案:

答案 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