ROWNUM(偽行號)如何在ACCESS查詢中實現。

來源:互聯網
上載者:User

很多朋友都碰到這個問題,如果在查詢中產生一個行號。比如有如下表
tblA   
ID, CNAME, SCORE
1   A001   80
2   B002   71
3   C003   92
4   E004   80
5   D005   85
想按分數來得到名次,如何?? Access的SQL語句中沒有rownum之類的偽列函數。 不過除了採用程式來實現外,你還可以通過下面SQL查詢語句來實現

一、按成績排序,並列者向下順延(如下沒有第三名,並列兩個第四)。
ID   CNAME   SCORE    SNO
3    C003    92        1
5    D005    85        2
4    E004    80        4
1    A001    80        4
2    B002    71        5

select a.ID, a.CNAME, a.SCORE,count(*) as SNO
from tblA a inner join tblA b on a.SCORE<=b.SCORE
group by a.ID, a.CNAME, a.SCORE
order by a.SCORE desc

二、按成績排序,並列者向上順延(如下沒有第四名,並列兩個第三)。
ID   CNAME   SCORE    SNO
3    C003    92        1
5    D005    85        2
4    E004    80        3
1    A001    80        3
2    B002    71        5

select a.ID, a.CNAME, a.SCORE,count(b.ID)+1 as SNO
from tblA a left join tblA b on a.SCORE<b.SCORE
group by a.ID, a.CNAME, a.SCORE
order by a.SCORE desc

三、按成績排序,並列者以學號大者在先。
ID   CNAME   SCORE    SNO
3    C003    92        1
5    D005    85        2
4    E004    80        3
1    A001    80        4
2    B002    71        5

select a.ID, a.CNAME, a.SCORE,count(*) as SNO
from tblA a inner join tblA b on (a.SCORE<b.SCORE or (a.SCORE=b.SCORE and a.ID<=b.ID))
group by a.ID, a.CNAME, a.SCORE
order by 4

以上為標準SQL查詢語句。除此之外,在ACCESS環境中還可以用DCOUNT域函數來實現這個排序號。 用DCOUNT域函數來實現的優點是,這個查詢仍為可更新查詢。但僅在ACCESS環境中可用。如果你用ADO,DAO通過JET-SQL引擎則不可以了。比如你在ASP中。

一、
select id,CNAME,SCORE,DCOUNT('ID','tblA','SCORE>=' & SCORE) as SNO
from tblA
order by 4

二、
select id,CNAME,SCORE,DCOUNT('ID','tblA','SCORE>' & SCORE)+1 as SNO
from tblA
order by 4

三、
select id,CNAME,SCORE,DCOUNT('ID','tblA','SCORE>' & SCORE & ' OR (SCORE=' & SCORE & ' AND ID>=' & ID & ')' ) as SNO
from tblA
order by 4

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.