2014-07-16 83 views
0

我正在做一个文档管理系统,我遇到了一些问题。我希望能够选择并显示具有最高版本号 这是我当前的代码每个独特的文件:如何返回最大值的多行

SELECT DISTINCT(policyheader.policytitle), 
       Max(policyrecords.policyversion) AS maxPolicy, 
       policyrecords.useruploaddate, 
       policyrecords.policydesc, 
       LEFT(policyrecords.whatchanged, 30) AS changes, 
       policyheader.policyref 
FROM policyrecords 
     INNER JOIN policyheader 
       ON policyrecords.policyref = policyheader.policyref 
GROUP BY policyrecords.policydesc, 
      policyrecords.policyversion 

我也一直在努力IN为好。

enter image description here

我想这回是这样的数据:它返回这个数据

enter image description here

+1

DISTINCT不是一个函数。除此之外,这是一个非常常见的问题。但是,如果您愿意,可以考虑遵循以下简单的两步操作步骤:1.如果您尚未这样做,请提供适当的DDL(和/或sqlfiddle),以便我们可以更轻松地复制问题。 2.如果您尚未这样做,请提供与步骤1中提供的信息相对应的所需结果集。 – Strawberry

+0

我已添加图片,我将尝试使用sql小提琴来复制它 – danielh

回答

0

您可以通过几种方式来解决这个问题。该not exists方法往往表现良好:

SELECT ph.policyTitle, pr.* 
FROM policyrecords pr INNER JOIN 
    policyheader ph 
    ON pr.policyRef = ph.policyRef 
WHERE not exists (select 1 
        from policyrecords pr2 
        where pr2.policyRef = pr.policyRef and 
         pr2.policyVersion > pr.policyVersion 
       ); 

这实现以下逻辑:“给我从policyrecords所有的记录,其中有具有相同policyRef并没有记录更大的policyVersion。”这是说我的最高版本的奇特方式。

+0

谢谢你的作品!我一直坚持这个小时哈哈 – danielh

-2
SELECT 
policyheader.policyTitle, 
policyrecords.policyVersion, 
policyrecords.userUploadDate, 
policyrecords.policyDesc, 
left(policyrecords.whatChanged,30) as changes, 
policyheader.policyRef 
FROM policyrecords 
INNER JOIN policyheader ON policyrecords.policyRef = policyheader.policyRef 
GROUP BY 
policyrecords.policy 
order by policyrecords.policyVersion desc 
-1

尝试此查询

SELECT 
    DISTINCT(policyheader.policyTitle), 
    MAX(policyrecords.policyVersion) AS maxPolicy, 
    policyrecords.userUploadDate, 
    policyrecords.policyDesc, 
    left(policyrecords.whatChanged,30) as changes, 
    policyheader.policyRef 
FROM policyrecords 
    INNER JOIN policyheader ON policyrecords.policyRef = policyheader.policyRef 
GROUP BY 
    DISTINCT(policyheader.policyTitle) 

如果组按版本,您将看到一个policyTitl的所有版本e :)