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

时间:2016-10-17 19:58:26

标签: visual-foxpro

如何在不更改分组的情况下添加表格元素?此选择按预期工作:

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

这给了我一个列表,其中只包含组cid,子组cnumber中具有max 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)不正确的分组。得到我想要的任何技巧?

1 个答案:

答案 0 :(得分:1)

您无法在单个查询中执行此操作,但您可以将现有查询转换为另一个查询中的派生表:

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