Advertisement

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)

还没有任何评论哟~