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. Cocos2d-x3.0 TestCPP文件夹笔记

    1.不多说,重力加速度. 2.ActionMangerTest:此Test是为了展示通过导演类来获得动作管理器ActionManager类.来控制节点动作. ①CrashTest:销毁demo,在精灵 ...

  2. DevExpress 控件使用菜单栏之BarManager

    DevExpress 开发的控件有很强的实力,不仅功能丰富,应用简便,而且界面华丽,更可方便定制.对于编程人员来说是个不错的选择.它的菜单栏控件更具代表,完全可以替代开发环境提供的基本控件,而让您编写 ...

  3. Openfire源码阅读(一)

    本篇先分析openfire源码的主要流程,模块细节后续再继续分析: 一.简介: Openfire是开源的实时协作服务器(RTC),它是基于公开协议XMPP(RFC-3920),并在此基础上实现了XMP ...

  4. spring-整合Struts2

    1. Spring 如何在 WEB 应用中使用 ? 1). 需要额外加入的 jar 包: spring-web-4.0.0.RELEASE.jarspring-webmvc-4.0.0.RELEASE ...

  5. SmartGit 授权Non-Commerical

    Window: %APPDATA%/syntevo/SmartGit/ 搜索settings.xml, 并且移除这个文件 重启

  6. SparkStreaming整合kafka编程

    1.下载spark-streaming-kafka插件包 由于Linux集群环境我使用spark是spark-2.1.1-bin-hadoop2.7,kafka是kafka_2.11-0.8.2.1, ...

  7. Cordova+Angularjs+Ionic 混合开发入门讲解

    作为一名学习Android开发的学生,对于移动开发的发展趋势颇为关注,大家都知道,现在原生的移动开发在企业上基本很少使用了,大部分企业为了降低成本,选择了webapp,hybrid(混合开发)这两种模 ...

  8. SD-SDI播出系统---使用GTX TX产生恢复时钟

    SD-SDI播出系统---使用GTX TX产生恢复时钟 1. 2.SD-SDI恢复时钟的生成

  9. centos6.5 系统乱码解决 i18n --摘自http://blog.csdn.net/yangkai_hudong/article/details/19033393

    二.终端. gedit 显示乱码 #vi /etc/sysconfig/i18n 将LANG="en_US.UTF-8" SYSFONT="latarcyrheb-sun ...

  10. [转]Scrapy简单入门及实例讲解

    Scrapy简单入门及实例讲解 中文文档:   http://scrapy-chs.readthedocs.io/zh_CN/0.24/ Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用 ...