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. day 57 jQuery的补充

    .data() 在匹配的元素集合中的所有元素上存储任意相关数据或返回匹配的元素集合中的第一个元素的给定名称的数据存储的值. .data(key, value): 描述:在匹配的元素上存储任意相关数据. ...

  2. 对某个区间操作(sort,stable_sort,parital_sort,parital_sort_copy,nth_element,is_sorted)

    sort //版本一 template <class RandomAccessIterator> void sort(RandomAccessIterator first,RandomAc ...

  3. MySQL之 从复制延迟问题排查

    一.从库复制延迟问题 1.可能的原因如下(1)主从服务器处于不同的网络之中,由于网络延迟导致:(2)主从服务器的硬件配置不同,从服务器的硬件配置(包括内存,CPU,网卡等)远低于主服务器:(3)主库上 ...

  4. ThinkPHP5与JQuery实现图片上传和预览效果

    内容正文 这篇文章主要为大家详细介绍了thinkphp上传图片功能,和jquery预览图片效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 先上效果图: html和js代码如下: <!DO ...

  5. 公式推导:【CFNet】

    [CFNet]: Valmadre J, Bertinetto L, Henriques J F, et al. End-to-end representation learning for Corr ...

  6. java-常用注解

    JDK自带注解 @Override 重写, 标识覆盖它的父类的方法 @Deprecated   已过期,表示方法是不被建议使用的 @Suppvisewarnings 压制警告,抑制警告 元注解 @Ta ...

  7. Flume连接oracle实时推送数据到kafka

    版本号: RedHat6.5   JDK1.8    flume-1.6.0   kafka_2.11-0.8.2.1 flume安装 RedHat6.5安装单机flume1.6:RedHat6.5安 ...

  8. spring与activemq(三种消息监听方式)

    1.3     消息监听器MessageListener 在Spring整合JMS的应用中我们在定义消息监听器的时候一共可以定义三种类型的消息监听器,分别是MessageListener.Sessio ...

  9. Linux内核移植到JZ2440

    一.准备工作:1.Linux内核:Linux2.6.22.6,可从www.kernel.org上下载:2.交叉工具编译链:arm-linux-gcc-3.4.5-glibc-2.3.6:3.yaffs ...

  10. Delphi跨进程访问DBGRID

    要想跨进程访问DBGRID,貌似只能用HOOK,写一个DLL想办法注入到目标进程.注入成功后,使DLL与目标进程在同一进程空间中(其内有一些细节问题,请参见代码),这时可以访问目标进程的VCL组件.并 ...