Jam*_*mes 3 sql t-sql sql-server sql-server-2008
我有一张桌子(time_period)
该表列出了几个时间段.
unique_id type_id sequence_number billing_id ...
13 LJK1 1 4356
14 CNS3 2 4356
15 LJK1 3 4356
16 AOX4 4 4356
17 CNS3 1 9827
18 POD2 2 9827
Run Code Online (Sandbox Code Playgroud)
这很棘手.我需要根据递增的序列号将所有type_id对从一个句点返回到下一个句点.例如,对于billing_id ='4356',我需要检索此结果集
-----------------------------------
LJK1 | CNS3 -- type_ids pair from seq 1 to seq 2
CNS3 | LJK1 -- type_ids pair from seq 2 to seq 3
LJK1 | AOX4 -- type_ids pair from seq 3 to seq 4
Run Code Online (Sandbox Code Playgroud)
每个顺序的sequence_numbers的计数是可变的(高达10,低至2).我将为X个订单执行此操作.由此,我将进行进一步的处理,但获得这些配对本身令我感到困惑.我不需要结果集中的order_id或序列号.
这里需要递归CTE吗?游标也许?或者也许使用枢轴?我刚刚进行了头脑风暴和研究,但我对其中任何一个都没有太多经验,可以使用一些方向.
使用SQL Server 2008
我认为你不需要递归CTE和游标.试试这个:
SELECT A.type_id, B.type_id
FROM time_period A
LEFT JOIN time_period B
ON A.billing_id = B.billing_id
AND A.sequence_number = B.sequence_number - 1
WHERE A.billing_id = 4356
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
979 次 |
| 最近记录: |