public DataSet GetListByPage(string strWhere, string orderby, int startIndex, int endIndex)
{
StringBuilder strSql=new StringBuilder();
strSql.Append("SELECT * FROM ( ");
strSql.Append(" SELECT ROW_NUMBER() OVER (");
if (!string.IsNullOrEmpty(orderby.Trim()))
{
strSql.Append("order by T." + orderby );
}
else
{
strSql.Append("order by T. desc");
}
strSql.Append(")AS Row, T.*  from ExamSetting T ");
if (!string.IsNullOrEmpty(strWhere.Trim()))
{
strSql.Append(" WHERE " + strWhere);
}
strSql.Append(" ) TT");
strSql.AppendFormat(" WHERE TT.Row between {0} and {1}", startIndex, endIndex);
return DbHelperSQL.Query(strSql.ToString());
}
使用sql2000怎么写??

解决方案 »

  1.   


    --SQL SERVER 2005+
    SELECT * FROM 

        SELECT 
            ROW_NUMBER() OVER (order by T.id) AS Row, T.* 
        from ExamSetting T WHERE 1=1
    ) TT 
    WHERE TT.Row between 10 and 20--等价于2000的中:
    --SQL SERVER 2000
    SELECT * FROM   

    SELECT TOP 10 * FROM 
    (SELECT TOP 20 * FROM ExamSetting WHERE 1=1 ORDER BY id) T BY id DESC 
    ) TT ORDER BY id 
    PS:在.net中动态拼接我就不写了,1=1 位置写你的条件,id表示的你排序字段,你改成动态的即可。
      

  2.   

    笔误,少了个orderSELECT * FROM   

    SELECT TOP 10 * FROM 
    (SELECT TOP 20 * FROM ExamSetting WHERE 1=1 ORDER BY id) T order BY id DESC 
    ) TT ORDER BY id