2014-07-16 80 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 :)