CREATE   VIEW [dbo].[Split_BusinessUnit]

AS

    WITH tt

    AS (

       SELECT BusinessUnit.BusinessUnitId

            , BusinessUnit.BusinessUnitId zz_id

            , BusinessUnit.new_name

            , BusinessUnit.ParentBusinessUnitId

            , 1 lev

       FROM   BusinessUnit

       WHERE  IsDisabled = 0

       UNION ALL

       SELECT tt.BusinessUnitId

            , b.BusinessUnitId

            , b.new_name

            , b.ParentBusinessUnitId

            , lev + 1

       FROM   tt

              JOIN BusinessUnit AS b

                  ON tt.ParentBusinessUnitId = b.BusinessUnitId

       WHERE  IsDisabled = 0 )

       , ttt

    AS ( SELECT BusinessUnitId

              , CAST(zz_id AS VARCHAR(60)) zz_id

              , new_name

              , ROW_NUMBER() OVER ( PARTITION BY BusinessUnitId

                                    ORDER BY lev DESC ) lev

         FROM   tt )

    SELECT   BusinessUnitId

           , MAX(lev) lev

           , MAX(CASE WHEN lev = 1 THEN zz_id

                      ELSE NULL

                 END) lev1id

           , MAX(CASE WHEN lev = 1 THEN new_name

                      ELSE NULL

                 END) lev1

           , MAX(CASE WHEN lev = 2 THEN zz_id

                      ELSE NULL

                 END) lev2id

           , MAX(CASE WHEN lev = 2 THEN new_name

                      ELSE NULL

                 END) lev2

           , MAX(CASE WHEN lev = 3 THEN zz_id

                      ELSE NULL

                 END) lev3id

           , MAX(CASE WHEN lev = 3 THEN new_name

                      ELSE NULL

                 END) lev3

           , MAX(CASE WHEN lev = 4 THEN zz_id

                      ELSE NULL

                 END) lev4id

           , MAX(CASE WHEN lev = 4 THEN new_name

                      ELSE NULL

                 END) lev4

           , MAX(CASE WHEN lev = 5 THEN zz_id

                      ELSE NULL

                 END) lev5id

           , MAX(CASE WHEN lev = 5 THEN new_name

                      ELSE NULL

                 END) lev5

           , MAX(CASE WHEN lev = 6 THEN zz_id

                      ELSE NULL

                 END) lev6id

           , MAX(CASE WHEN lev = 6 THEN new_name

                      ELSE NULL

                 END) lev6

           , MAX(CASE WHEN lev = 7 THEN zz_id

                      ELSE NULL

                 END) lev7id

           , MAX(CASE WHEN lev = 7 THEN new_name

                      ELSE NULL

                 END) lev7

           , MAX(CASE WHEN lev = 8 THEN zz_id

                      ELSE NULL

                 END) lev8id

           , MAX(CASE WHEN lev = 8 THEN new_name

                      ELSE NULL

                 END) lev8

           , MAX(CASE WHEN lev = 9 THEN zz_id

                      ELSE NULL

                 END) lev9id

           , MAX(CASE WHEN lev = 9 THEN new_name

                      ELSE NULL

                 END) lev9

           , MAX(CASE WHEN lev = 10 THEN zz_id

                      ELSE NULL

                 END) lev10id

           , MAX(CASE WHEN lev = 10 THEN new_name

                      ELSE NULL

                 END) lev10

    FROM     ttt

    GROUP BY BusinessUnitId;

SQL按分隔符拆分字段串的更多相关文章

  1. SQL语句中拆分字段

    SELECT PARSENAME(replace(MONITOR_ROOM_ID,'^' , '.'), 1) AS RoomID FROM ZY_MONITOR_ROOM 遇到以前系统高人设计的表, ...

  2. 拆分字段优化SQL

    拆分字段优化SQL 今天看到一条用函数处理连接的SQL,是群里某位网友的,SQL语句如下: SELECT SO_Order.fdate , SO_Order.fsn FROM so_order INN ...

  3. sql 表值函数-将一个传入的字符串用2中分隔符拆分成临时表

    USE [tms]GO/****** Object: UserDefinedFunction [dbo].[fn_StrToTable_Double] Script Date: 2017/4/26 9 ...

  4. Sql Server xml 类型字段的增删改查

    1.定义表结构 在MSSM中新建数据库表CommunicateItem,定义其中一个字段ItemContentXml 为xml类型 2.编辑表数据,新增一行,发现xml类型不能通过设计器录入数据. 需 ...

  5. SQL Server对Xml字段的操作

    T-Sql操作Xml数据 一.前言 SQL Server 2005 引入了一种称为 XML 的本机数据类型.用户可以创建这样的表,它在关系列之外还有一个或多个 XML 类型的列:此外,还允许带有变量和 ...

  6. 向已写好的多行插入sql语句中添加字段和值

    #region 添加支款方式--向已写好的多行插入sql语句中添加字段和值 public int A_ZhifuFS(int diqu) { ; string strData = @"SEL ...

  7. sql 给数据库表 字段 添加注释

    最近发现一些代码生成器 有针对注释做一个很好的转化,之前建表的时候 没有这块的注释.现在想增加,专门去看了下 如何增加注释 1 -- 表加注释 2 EXEC sys.sp_addextendedpro ...

  8. PHP Apache Access Log 分析工具 拆分字段成CSV文件并插入Mysql数据库分析

    现在需要分析访问日志,怎么办? 比如分析D:\Servers\Apache2.2\logs\access2014-05-22.log http://my.oschina.net/cart/针对这个问题 ...

  9. SQL 把表中字段存储的逗号隔开内容转换成列表形式

    原文:[原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式 我们日常开发中,不管是表设计问题抑或是其他什么原因,或多或少都会遇到一张表中有一个字段存储的内容是用逗号隔开的列表. 具体效果如下图: ...

随机推荐

  1. 免费开源 KiCad EDA 中文资料收集整理(2019-04-30)

    免费开源 KiCad EDA 中文资料收集整理 用 KiCad 也有一段时间了,为了方便自己查找,整理一下 KiCad 的中文资料,会不定期更新. 会收集KiCad 的新闻.元件封装库.应用技巧.开源 ...

  2. ML(7)——支持向量机1(构建支持向量机)

    支持向量机缩写是SVM(support vaector machine),这里的“机(machine)”是一个算法.在机器学习领域,常把一些算法看做是一个机器,如感知机(也叫感知器).支持向量机本身是 ...

  3. ML(附录2)——最小二乘法

    参见  :多变量微积分笔记2——最小二乘法

  4. 关于 TypeReference 的解释

    首先 TypeReference  是描述 一个复杂 泛型的工具类. TypeReference 很多类库都有,用 fastjson 的 举例,大概就这个意思. 例子: Response<Fee ...

  5. spring-IOC容器(二)

    一.bean配置里面使用外部属性文件: <bean>中添加context Schema定义,Spring 提供了一个<property-placeholder>元素,可以在be ...

  6. 中文自然语言处理工具HanLP源码包的下载使用记录

    中文自然语言处理工具HanLP源码包的下载使用记录 这篇文章主要分享的是hanlp自然语言处理源码的下载,数据集的下载,以及将让源代码中的demo能够跑通.Hanlp安装包的下载以及安装其实之前就已经 ...

  7. error: C++ preprocessor "/lib/cpp" fails sanity check错误解决方法

    error: C++ preprocessor "/lib/cpp" fails sanity check 问题的解决 问题的根源是缺少必要的C++库.如果是CentOS系统,运行 ...

  8. VGA原理

    VGA原理 1.VGA时序 2.不同的显示标准,有不同的水平段和垂直段 3.像素时钟和帧频的关系 联系目前调试的1080i 50Hz: 像素时钟为148.5MHz, 水平段周期 = 2640 X (1 ...

  9. jQuery实现商品详情 详细参数页面切换

    利用index实现: <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  10. 用DLL实现插件的简单演示

    这是DLL的代码 library MyDll; uses SysUtils, Dialogs, Classes; procedure ShowInfo(info:PChar);stdcall; beg ...