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;
  • 相关阅读:
    mysql 远程登陆不上
    hdu 5339 Untitled【搜索】
    SqlServer 书目
    passwordauthentication yes
    oracle 11g RAC ocfs2
    Oracle 11g RAC database on ASM, ACFS or OCFS2
    CentOS ips bonding
    Oracle 11g RAC features
    openStack 王者归来之 trivial matters
    openstack windows 2008 img
  • 原文地址:https://www.cnblogs.com/BinBinGo/p/9559080.html
Copyright © 2011-2022 走看看