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;
  • 相关阅读:
    UiPath鼠标操作文本的介绍和使用
    UiPath鼠标操作元素的介绍和使用
    UiPath循环活动Do While的介绍和使用
    UiPath循环活动Do While的介绍和使用
    UiPath循环活动While的介绍和使用
    设计模式之: Decorator(装饰器)模式
    C语言深度解剖读书笔记(1.关键字的秘密)
    HDU 4341 Gold miner (分组背包)
    HDU 3496 Watch The Movie( 二维费用背包)
    Mahout源码MeanShiftCanopyDriver分析之一初识
  • 原文地址:https://www.cnblogs.com/BinBinGo/p/9559080.html
Copyright © 2011-2022 走看看