近期做报表需求的时候遇到了区间数据需要拆分的情况,那是什么情况呢?
数据是这样子的,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,
--结束SN
(CASE WHEN CHARINDEX('-',PLAN_SN) > 0 THEN RIGHT(PLAN_SN, LEN(PLAN_SN