动态sql在每个id中获取记录

时间:2014-06-09 09:13:31

标签: sql-server-2008 dynamic-sql

说我有这个记录

    id     debit      credit     balance
   001     100         0          100 
   001     200         0          300
   001      0          100        200
   002     50          0          50
   002     100         0          150
   002     0           200        -50
   003     50          0          50
   003     500         0          550
   003     0           100        450

现在我想要发生的是我想获取记录中每个id的每2条记录,它将如下所示:

    id     debit      credit     balance
   001     100         0          100 
   001     200         0          300
   002     50          0          50
   002     100         0          150
   003     50          0          50
   003     500         0          550

是否可以使用动态sql进行此输出?如果它可以,任何人都可以帮助我,我被困在这里。谢谢。

1 个答案:

答案 0 :(得分:1)

尝试,

;WITH Data
AS
(
  SELECT *, ROW_NUMBER() OVER (PARTITION BY id ORDER BY id) MyRowNumber
  FROM mytable 
)
SELECT * 
FROM Data
WHERE MyRowNumber IN (1,2)

更改ORDER BY子句以获取所需的订单。