请问一条SQL语句怎么写

某数据库表中有字段NUMBER,还有其它一些字段。想把NUMBER一样的排在一起,然后按NUMBER一样的累加大小排序。想得到的结果如下:NUMBERFILDE1FILD... 某数据库表中有字段NUMBER,还有其它一些字段。
想把NUMBER一样的排在一起,然后按NUMBER一样的累加大小排序。
想得到的结果如下:
NUMBER FILDE1 FILDE2..
1000 X1 Y1
1000 X2 Y2
1000 X3 Y3
1000 X4 Y4
998 X5 Y5
998 X6 Y6
998 X7 Y7
994 X8 Y8
994 X9 Y9
502 X10 Y10

1000出现了4次,998出现了3次,994出现了2次,502出现了1次。
按相同NUMBER出现次数的多少排序。
谢谢。
在ACCESS中查询。
展开
 我来答
me...n@126.com
2011-05-06 · TA获得超过958个赞
知道小有建树答主
回答量:799
采纳率:100%
帮助的人:136万
展开全部
转载的,能用!

------------
CREATE PROCEDURE Pagination
@tblName varchar(255), -- 表名
@strGetFields varchar(1000) = '*', -- 需要返回的列
@fldName varchar(255)='', -- 排序的字段名
@PageSize int = 10, -- 页尺寸
@PageIndex int = 1, -- 页码
@doCount bit = 0, -- 返回记录总数, 非 0 值则返回
@OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
@strWhere varchar(1500) = '' -- 查询条件 (注意: 不要加 where)
AS

declare @d datetime
set @d=getdate()

declare @strSQL varchar(5000) -- 主语句
declare @strTmp varchar(110) -- 临时变量
declare @strOrder varchar(400) -- 排序类型
if @doCount != 0
begin
if @strWhere !=''
set @strSQL = 'select count(*) as Total from ['+ @tblName +'] where '+ @strWhere
else
set @strSQL = 'select count(*) as Total from ['+ @tblName +']'
end
--以上代码的意思是如果@doCount传递过来的不是0,就执行总数统计。以下的所有代码都
--是@doCount为0的情况
else
begin
if @OrderType != 0
begin
set @strTmp = '<(select min'
set @strOrder = ' order by ['+ @fldName +'] desc'
--如果@OrderType不是0,就执行降序,这句很重要!
end
else
begin
set @strTmp = '>(select max'
set @strOrder = ' order by ['+ @fldName +'] asc'
end
if @PageIndex = 1
begin
if @strWhere != ''
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] where ' + @strWhere + ' ' + @strOrder
else
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] '+ @strOrder
--如果是第一页就执行以上代码,这样会加快执行速度
end
else
begin
--以下代码赋予了@strSQL以真正执行的SQL代码
set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from [' + @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + '])
from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + '] from ['+ @tblName +']' + @strOrder + ') as tblTmp)'+ @strOrder

if @strWhere != ''

set @strSQL = 'select top ' + str(@PageSize) +' '+@strGetFields+ ' from ['+ @tblName +'] where [' + @fldName + ']' + @strTmp + '(['+ @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['+ @fldName + ']
from ['+ @tblName +'] where ' + @strWhere + ' ' + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

end

end

exec ( @strSQL)
select datediff(ms,@d,getdate()) as 查询时间毫秒

go
Pagination 'CopyrightInformation','*','id',120,45667,0,0,''
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
射手幽灵伊
2011-05-06 · TA获得超过2715个赞
知道大有可为答主
回答量:4955
采纳率:81%
帮助的人:1913万
展开全部
select number,count(1) cnt from table
group by number
order by cnt desc (从多到少)
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式