2013-10-25 93 views
0

我有兩個表連接AUTO_KEY字段,我從一個表中檢索數字(id),從另一個我通過數字(id)獲得多個狀態,每個狀態都有一個與其關聯的日期。 我需要限制的結果只能爲所有編號(ID)的最大/最新日期和對應的狀態加入來自同一個表的兩個查詢 - SELECT DISTINCT?

SELECT 
    OPERATION.NUMBER, 
    STATUS.STATUS, 
    Max(STATUS.DATE) 

FROM 
    STATUS, 
    OPERATION 

WHERE 
OPERATION.AUTO_KEY = STATUS.AUTO_KEY 

從這裏

Number Status Date 
----------------------------- 
1  A  10/20/13 
1  B  10/15/13 
2  A  10/10/13 
2  AX  10/05/13 
2  AD  10/03/13 
3  DD  10/03/13 

結果應該是

Number Status Date 
----------------------------- 
1  A  10/20/13 
2  A  10/10/13 
3  DD  10/03/13 

在此先感謝

+0

樣本數據和預期輸出都以表格的形式將有助於更好地理解這個問題。 –

+0

示例數據應該在問題中...不在評論中:) –

+0

我剛剛添加了一個示例。謝謝您的幫助 – Gonzalez

回答

1

您可以使用CTEROW_NUMBER()功能。也請使用Table JOIN代替FROM STATUS, OPERATION

;With CTE AS (
    SELECT O.NUMBER, S.STATUS, S.DATE, 
      ROW_NUMBER() OVER (ORDER BY S.DATE DESC) RN 
    FROM STATUS S JOIN OPERATION O 
      ON O.AUTO_KEY = S.AUTO_KEY 
) 
SELECT NUMBER, STATUS, DATE 
FROM CTE 
WHERE RN = 1 
ORDER BY NUMBER 
+0

謝謝。我正在使用Excel來查詢Oracle數據庫。它似乎沒有與Oracle – Gonzalez

0
SELECT OPERATION.CNUMBER, 
     STATUS.STATUS, 
     STATUS.CDATE 
FROM STATUS, 
    OPERATION 
WHERE OPERATION.AUTO_KEY = STATUS.AUTO_KEY 
AND STATUS.CDATE = (
SELECT MAX(STATUS.CDATE) MAX_DATE 
FROM STATUS, 
     OPERATION 
WHERE OPERATION.AUTO_KEY = STATUS.AUTO_KEY 
GROUP BY OPERATION.CNUMBER) 
+0

一起工作謝謝。我正在使用Excel來查詢Oracle數據庫。我收到一條錯誤消息。缺少右括號,我檢查了我有他們全部 – Gonzalez

+0

我在這裏的測試環境上運行查詢,並沒有問題。順便提一下,列名不能爲NUMBER或DATE。我在我的答案中解決了這個問題 –

+0

爲了詳細說明我之前的評論。我對oracle數據庫運行了查詢(不使用Excel) –