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. Unity 游戏性能优化 学习

    优化误区   

  2. bfprt

    bfprt //找第k小的数 #include <iostream> #include <vector> #include <algorithm> using na ...

  3. JS IE 打开本地exe程序

    例: try{ //新建一个ActiveXObject对象 var exe = new ActiveXObject("wscript.shell"); var exePath = ...

  4. Eureka的高可用

    问题: 现在Eureka和Client是1对1,但是Eureka挂了,就不能用了. 如何解决呢,创建多个Erurka.并且Eureka进行相互注册.如下图 怎么相互注册呢 1. 创建两个Eureka ...

  5. 开源Astro(SparkSQL On HBase)

    华为2015年7月20日在O'Reilly Open Source Convention (OSCON) 上宣布Spark SQL on HBase package正式开源.Spark SQL on ...

  6. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide

    阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide 说明:本文档自带测试工程: DE_ALTSHIFT_TAPS.zip 1.支 ...

  7. Thinkphp 3.1. 3 ueditor 1.4.3 添加水印

    1.引入Ueditor  <!-- 实例化编辑器 --> <script type="text/javascript"> window.UEDITOR_HO ...

  8. 并查集(Union-Find)

    常见问题: 首先在地图上给你若干个城镇,这些城镇都可以看作点,然后告诉你哪些对城镇之间是有道路直接相连的.最后要解决的是整幅图的连通性问题.比如随意给你两个点,让你判断它们是否连通,或者问你整幅图一共 ...

  9. 黄聪:jquery.bootgrid表格插件有的属性(visibleInSelection、cssClass、headerCssClass、headerAlign)不能识别的解决办法

    主要是属性大小写问题,修改jquery.bootgrid.js文件,在function loadColumns()方法里面添加下面的语句就好了 data.headerAlign = data.head ...

  10. Ubuntu 14.10 下安装Spark

    Spark 是一种与 Hadoop 相似的开源集群计算环境,不过最近非常火.下面介绍安装步骤. 1 安装scala 1.1 我选用的是2.11.4,下载地址http://www.scala-lang. ...