zoukankan      html  css  js  c++  java
  • SQL按分隔符拆分字段串

    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;
  • 相关阅读:
    框架面试题
    Mybatis的配置文件
    better-mybatis-generator逆向工程
    mysql-5.7.26-linux-glibc2.12-x86_64.tar.gz的安装与配置
    apache-tomcat-8.5.40.tar.gz的安装与配置
    Linux系统的CentOS 7安装,Linux系统的登陆, VMware 12(32/64位)下载地址,VMware 15(32/64位)下载地址,安装VMware 12
    jdk-8u211-linux-x64.tar.gz的安装
    Javaweb的学习笔记(部分总结)
    蜂窝背景页面特效
    Linux操作系统ip的设置和vm快照
  • 原文地址:https://www.cnblogs.com/BinBinGo/p/9559080.html
Copyright © 2011-2022 走看看