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. 使用patroni 解决hasura graphql-engine pg 数据库ha的问题

    环境准备 机器pg 数据库地址修改为haproxy 的ip地址,端口是haproxy的tcp 端口,配置比较简单 hasura graphql-engine docker-compose versio ...

  2. redis服务以及phpredis扩展的安装

    一.下载软件包 下载redis wget http://download.redis.io/releases/redis-3.0.7.tar.gz 下载redis的php扩展 wget http:// ...

  3. 互换元素(swap,swap_ranges)

    swap template <class Assignable> void swap(Assignable &a,Assignable &b); iter_swap tem ...

  4. tensorflow object detection

    Follow guidelin from https://github.com/tensorflow/models/blob/master/research/object_detection/g3do ...

  5. ORACLE 12C 之集群日志位置变化

    如果你还是使用 oracle 11g RAC 的目录结构方式寻找集群的日志,你会发现目录中所有的日志都是空的.actdb21:/oracle/app/12.2.0/grid/log/actdb21(+ ...

  6. hdfs 例子

    package hadoop; import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; ...

  7. ElasticSearch(七)管理ES

    发现,故障修复以及恢复 在发现节点,主要是使用ES的zen模块来进行发现,发现的目的就是加入集群,zen的发现有两种模式分别是单播和组播,单播是指配置好了要发现的节点IP,组播则是指不配置具体IP,向 ...

  8. monkey配置及简单报告生成(安卓)

    参考网址:http://www.51testing.com/html/72/502872-3709760.html   1.安装jdk,配置环境变量   2.安装sdk(解压后,配置环境变量到path ...

  9. bzoj 2351 [BeiJing2011]Matrix——二维哈希

    题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2351 就是先把每行单独从左到右扫着乘一个 b1 哈希起来,然后再按列从上往下乘一个 b2 哈 ...

  10. Ubuntu Nginx Ruby, Rails Mysql 安装

    1. Nginx 安装 sudo apt-get install nginx 2. Ruby 安装 sudo apt-get install ruby 查看版本 ruby -v 3. Rails 安装 ...