2017-08-28 23 views
1

這可能是非常簡單的解決,但我似乎無法通過Google正確找到答案。Oracle SQL:按他們最近的每個ID列選擇所有行

我正在尋找從他們最近的ID拉動表中的所有行,而無需手動鍵入每個列名稱。我有這種已經與以下查詢工作:

SELECT 
STANDARD_ID, 
MAX(ID) 

FROM 
HIST_ILLUM_RT 

WHERE STANDARD_ID IS NOT NULL 

GROUP BY 
STANDARD_ID 

其中拉我需要的所有行。我試圖通過使用此查詢來解決這個問題:

SELECT 
* 

FROM 
HIST_ILLUM_RT 

WHERE ID = (SELECT MAX(ID) 
      FROM HIST_ILLUM_RT) 

其中提取所有列,但只有一行。例如 Part of the row fetched

應該拉動的行數將會改變超時。

是否有可能拉動所有列以及行而無需手動輸入每個列名稱(在這種情況下,有超過50)?或者,除了在Oracle sql中手動輸入外,別無選擇嗎?

回答

1

如何使用自己的查詢與GROUP BY?

SELECT * 
FROM HIST_ILLUM_RT 
WHERE ID IN (
    SELECT MAX(ID) 
    FROM HIST_ILLUM_RT GROUP BY STANDARD_ID 
) 
+0

嗯..沒想到這樣做似乎是一個好主意。但這似乎只是做 SELECT * FROM HIST_ILLUM_RT 但它也許可以工作。我會繼續看它,謝謝! – spyr0

+0

等待!我錯了。它可能實際上在工作,讓我仔細檢查。 – spyr0

1

試試這個:

WITH CTE AS(

     SELECT STANDARD_ID,ID, 
       ROW_NUMBER() OVER(Partition BY ID ORDER BY ID DESC) RN 
     FROM HIST_ILLUM_RT 
     WHERE STANDARD_ID IS NOT NULL 
) 
SELECT STANDARD_ID,ID 
FROM CTE 
WHERE RN = 1; 
+0

感謝您的迴應!這個工作沒有';'但它仍然只選擇這兩列。我試圖選擇50列的列,而不必手動輸入它們,除非它不可避免 – spyr0

+1

如果您不想也選擇行號(通過'select *'),那麼您別無選擇,只能列出列出來。 –

+0

啊好的。所以我期望創建一個視圖,但行數可能會改變,所以我會盡力勇敢地寫出每一個。 – spyr0

相關問題