首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi 中怎么获取SQL n条记录中的第n/2条记录

2013-01-06 
delphi 中如何获取SQL n条记录中的第n/2条记录如题:prd_noprd_mark1B101B111B123D63D76U10如上表,prd_no作

delphi 中如何获取SQL n条记录中的第n/2条记录
如题:
prd_no    prd_mark
1         B10
1         B11
1         B12
3         D6
3         D7
6         U10
如上表,prd_no作为条件,查询结果可能有0、1、2、3、4、5、6等若干条,设记录条数为n,若n为偶数则取第n/2条记录的结果,若n为奇数则取第(n+1)/2条记录的结果,sql语句要如何写?或有什么别的办法
[解决办法]
好像adoquery有recno属性
[解决办法]

declare @Half int
select  @Half=(count(*)+1)/2 from TableName order by prd_no,prd_mark
exec('
select top 1*  from (select top  '+@Half+'   * from TableName order by prd_no,prd_mark
) a order by prd_no desc,prd_mark desc
')

上面是个比较通用的办法,如果你的MSSQL是2005以上版本的话,是可以有更简单办法的(用Row_NUMBER()等函数)

热点排行