SqlServer拆分为区间数据并识别递归模式
发布时间
阅读量:
阅读量
在近期处理报表需求的过程中,遇到了需要对区间数据进行拆分的情形,具体是怎样的情况呢?数据的结构如下,PLAN_SN字段需要被拆分为独立的条目,例如原本为2406770-2406771的区间数据,应拆分为两个独立的数据项,即2406770和2406771,其余字段则保持不变。

那么该如何操作呢?我的初步想法是尝试编写一个存储过程,不过这种方式相对繁琐,因此这里采用了递归的实现方式。
什么是递归呢?下面简单介绍一下SQL中的递归概念,虽然我自己使用得并不多。
递归查询的运作机制是首先从一个初始的结果集(即锚点部分)出发,随后在此基础上逐步展开递归运算。
最终实现如下:
WITH PlanSNs AS (
SELECT ORDER_NO,--无需处理的字段
--开始SN
(CASE WHEN CHARINDEX('-',PLAN_SN) > 0 THEN LEFT(PLAN_SN, CHARINDEX('-', PLAN_SN) - 1) ELSE PLAN_SN END) AS StartSN,
全部评论 (0)
还没有任何评论哟~
