如何在SQL中执行skip和take函数?

时间:2012-05-18 04:49:40

标签: sql-server

我有161列,每列有50K以上的数据。我必须在折线图中为每一列显示此信息。如果尝试在折线图中显示此信息,则绘制图形需要更多时间。

问题:

现在我决定将每列对应的数据进行划分。对于column1,取前50行取平均值,然后取50行,依此类推。所有列都将继续此过程。

我如何在SQL中执行此操作。我在C#中完成了它,但我想在SQL服务器端执行此操作。

 public static IEnumerable<double> CheckRateValue(this IEnumerable<double> values)
    {

            int i = 1;
            int j = 0;
            for (; i < values.Count(); )
            {
                yield return values.Skip(j * 2).Take(2).Average();
                i = i + 2;
                j++;
            }


    }

1 个答案:

答案 0 :(得分:2)

您可以使用row_number()

declare @Skip int = 20
declare @Take int = 10

select SomeColumn
from (
       select SomeColumn,
              row_number() over(order by SomeColumnToOrderBy) as rn
       from YourTable
     ) T
where rn > @Skip and 
      rn <= @Skip + @Take