如何在不更改分组的情况下包含 Table 元素

How to Include Table Element Without Changing Grouping

如何在不更改分组的情况下添加 table 元素? select 按预期工作:

SELECT cid, cnumber, cenrtyp, MAX(nqpoints);
from demographicenroll3.dbf;
WHERE cenrtyp = "RT" ;
GROUP BY cid, cnumber, cenrtyp ;

这给了我一个列表,其中仅包含组 cid、子组 cnumber 中的一个记录,它具有我想要的最大 nqpoints 值。

但我需要在我的记录集中包含唯一的记录编号 cnumber,即 ecid - 所以我添加 ecid:

SELECT cid, cnumber, cenrtyp, MAX(nqpoints), ecid;
from demographicenroll3.dbf;
WHERE cenrtyp = "RT" ;
GROUP BY cid, cnumber, cenrtyp, ecid ;

但这不起作用,因为它更改了分组,使 Max(nqpoints) 不正确。有什么技巧可以得到我想要的东西吗?

您不能在单个查询中执行此操作,但您可以通过将现有查询变成另一个查询中的派生 table:

SELECT dmax.cid, dmax.cnumber, dmax.cenrtyp, maxpts, ecid ;
FROM demographicenroll3 d3
  JOIN (
     SELECT cid, cnumber, cenrtyp, MAX(nqpoints) AS maxpts;
     from demographicenroll3;
     WHERE cenrtyp = "RT" ;
     GROUP BY cid, cnumber, cenrtyp) dmax ;
    ON d3.cid = dmax.cid ;
    AND d3.cnumber = dmax.cnumber ;
    AND d3.cenrtyp = dmax.cenrtype ;
    AND d3.nqpoints = dmax.maxpts