今天,當你需要對一個沒有排序ID的表進行排序,并且想給每一行數據都給一個序號。這相當于很多人問到的,如何在一個視圖中為每一行增加一個自動增長的“ID”號。你可以這樣寫:
Select a.Badge,Count(a.Badge) as xorder
From cPayroll a , cPayroll b
Where a.Badge > = b.Badge Group by a.Badge
看了以后的語句,你可能會覺得非常簡單。在以上的基礎上,還可以滿足以下這樣一個很實用的功能。一個表中的前20行分成第1組,從21行-->40行分成第2組,41-->60 分成第3組。也即是在一個表的基礎上拓展用視圖生成以下的數據。(xOrder 與 Group 都是視圖生成的。)
Badge xOrder Group
A1 1 G1
A2 2 G1
.
B1 21 G2
B2 22 G2
...
C1 41 G3
...
在上面的視圖得出來以后, 我們就可以用 Select * from ViewName Where Group = 'G1' ('G2'....) 的語句進行分組或分頁顯示查詢了。以下我們來生成這樣的結果.
在排序功能實現了以后,再實現分組,就是略微變化一下而已:
Select Badge , Count(a.Badge) as xorder , Cast(((Count(a.Badge)-1)/20 ) +1 as varchar(10)) as Group
From cPayroll a , cPayroll b
Where a.Badge > = b.Badge Group by a.Badge