2016-02-01 63 views
0

如何從表格中提取第10行,即第10行,第20行等。但是,如果表中的行數少於10行,則應該讀取最後一行。如何在sql查詢中實現條件選擇?

這可能是目前這個在這個問題上查詢提前形式 - How can I select 10th, 20th, 30th ... row of the result of another select query

我做了這樣的事情來選擇每10行 -

select case_id 
from 
    (select case_id,rownum as seq 
    from table 
    where from = 'A' and to ='B' 
    order by ID 
    ) 
where mod(seq,10) = 0 

但如果有少內部查詢結果中的行數超過10行,應讀取最後一行。

OBS:數據庫 - 甲骨文12C

+2

我投票關閉這一問題作爲題外話,因爲StackOverflow的是不是一個代碼編寫的服務。如果您的代碼不起作用,請在SO上發佈問題。但是「爲我寫這段代碼」在這裏是無關緊要的。 – Luaan

+0

我會在rownum中創建一個臨時表,然後根據該臨時表編寫腳本。 – PKirby

+0

該問題已編輯,現在看起來不錯。 –

回答

2
SELECT ColumnA, 
     ColumnB, 
     ColumnC 
FROM ( 
    SELECT ROWNUM rn, 
     COUNT(*) OVER (ORDER BY NULL) mx, 
     q.ColumnA, 
     q.ColumnB, 
     q.ColumnC 
    FROM (
    SELECT ColumnA, 
      ColumnB, 
      ColumnC 
    FROM your_table 
    ORDER BY ColumnA 
) q 
) 
WHERE MOD(rn, 10) = 0 
OR  (mx = rn AND mx < 10);