如何通过键限制选择查询中的最大行

时间:2018-11-20 03:39:51

标签: sql sql-server tsql

我有

  ID      ID2      Amount
  -------- -------- ------
  01       02           20
  01       03           30
  02       04           40
  02       06           30
  03       05           70
  03       06           60
  03       07           60
  04       08          100
  04       09          110

我想将上面的数据查询到2个结果集中(最多返回5行):

结果1:

ID1      ID2      Amount
  -------- -------- ------
  01       02           20
  01       03           30
  02       04           40
  02       06           30

结果2:

ID1      ID2      Amount
  -------- -------- ------
  03       05           70
  03       06           60
  03       07           60
  04       08          100
  04       09          110

我应该如何构造查询?

1 个答案:

答案 0 :(得分:0)

使用row_number()生成序列号。 (row_number() over (order by ID1) - 1) / 5 + 1将为您提供每个结果5个的设置

; WITH CTE AS
(
    SELECT result_no = (row_number() over (order by ID1) - 1) / 5 + 1,
           ID1, ID2, Amount
    FROM   yourtable
)
SELECT *
FROM   CTE
WHERE  result_no = @result_no