亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

靈活運用 SQL Server 數據庫的 FOR XML PATH

系統 2408 0

起因 ?

今天歐陽冰提出一個報表需求,其核心部分可以簡化為這樣一張表格:

調度單號 與調度單相關的多張作業單號
001 0001/0002/0003
002 0004
003 0005/0006/0007/0008

從上述表格可以看出,如何把調度單的多行作業單明細的單號合并到同一行的一個字段中,并用斜杠 / 分隔,是這個需求的難點。

解決 ?

于是到網上去搜索了一下,有這樣一篇文章: 靈活運用 SQL SERVER FOR XML PATH
其中介紹了 SQL Server 數據庫的 FOR XML PATH 關鍵字的用法。

在一句 SELECT 語句的最后加上 FOR XML PATH ,就可以 把整個結果數據集變成一個 xml 字符串 。大家可以自行嘗試一下。
而如果使用 FOR XML PATH('') ,則是 去除所有 xml 節點標記,只剩下原原本本的數據 。我們要的就是這個。

于是,我們可以寫 SQL:

      
        SELECT
      
       DH
      
        .
      
      DH_DISPATCH_NO DISPATCH_NO
      
        ,
      
      
        (
      
      
        SELECT
      
       CLH
      
        .
      
      CLH_CARGO_LOAD_NO 
      
        +
      
      
        '/'
      
      
        FROM
      
       TM_DISPATCH_CARGO_LOAD_L DCLL
      
        ,
      
       TM_CARGO_LOAD_H CLH 

        
      
        WHERE
      
       DH
      
        .
      
      BILLID 
      
        =
      
       DCLL
      
        .
      
      BILLID 
      
        AND
      
       DCLL
      
        .
      
      DCLL_CARGO_LOAD_HEADER_ID 
      
        =
      
       CLH
      
        .
      
      BILLID 

        
      
        FOR
      
       XML PATH
      
        (
      
      
        ''
      
      
        )
      
      
        )
      
       NOS 


      
        FROM
      
       TM_DISPATCH_H DH 


      
        GROUP
      
      
        BY
      
       DH
      
        .
      
      BILLID
      
        ,
      
       DH
      
        .
      
      DH_DISPATCH_NO


      
        ;
      
    

這樣就已經差不多了,但是多張作業單號這一列最后總是多個斜杠 /。

為了把最后這個斜杠去掉,我們還要使用一下 LEFT 函數。那么最終可以使用這樣一句 SQL 來滿足上述需求:

      
        SELECT
      
       DISPATCH_NO
      
        ,
      
      
        LEFT
      
      
        (
      
      NOS
      
        ,
      
       LEN
      
        (
      
      NOS
      
        )
      
      
        -
      
      
        1
      
      
        )
      
       CARGO_LOAD_NOS


      
        FROM
      
      
        (
      
      
        SELECT
      
       DH
      
        .
      
      DH_DISPATCH_NO DISPATCH_NO
      
        ,
      
      
        (
      
      
        SELECT
      
       CLH
      
        .
      
      CLH_CARGO_LOAD_NO 
      
        +
      
      
        '/'
      
      
        FROM
      
       TM_DISPATCH_CARGO_LOAD_L DCLL
      
        ,
      
       TM_CARGO_LOAD_H CLH 

                
      
        WHERE
      
       DH
      
        .
      
      BILLID 
      
        =
      
       DCLL
      
        .
      
      BILLID 
      
        AND
      
       DCLL
      
        .
      
      DCLL_CARGO_LOAD_HEADER_ID 
      
        =
      
       CLH
      
        .
      
      BILLID 

                
      
        FOR
      
       XML PATH
      
        (
      
      
        ''
      
      
        )
      
      
        )
      
       NOS 

        
      
        FROM
      
       TM_DISPATCH_H DH 

        
      
        GROUP
      
      
        BY
      
       DH
      
        .
      
      BILLID
      
        ,
      
       DH
      
        .
      
      DH_DISPATCH_NO 

        
      
        )
      
       TMP 


      
        ORDER
      
      
        BY
      
       DISPATCH_NO 


      
        ;
      
    

靈活運用 SQL Server 數據庫的 FOR XML PATH


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 香港a毛片免费全部播放 | 亚洲精品美女一区二区三区乱码 | 天天色天天干天天射 | 精品国产福利在线 | 三级a做爰大乳在线观看 | 成人性视频网站 | 久久视频精品36线视频在线观看 | 俄罗斯aaaa一级毛片 | 欧美成人在线视频 | 国产香蕉国产精品偷在线观看 | 性短视频在线观看免费不卡流畅 | 国产精品分类视频分类一区 | 二级片毛片 | 亚洲第3页| 国产综合久久一区二区三区 | 日日碰碰| 福利精品在线 | 中国免费毛片 | 亚洲毛片在线免费观看 | 国产一区二区在线观看视频 | 日韩中文字幕精品一区在线 | 国产九色 | 久久精品在线免费观看 | 四虎影院紧急入口 | 99av在线 | 久久99国产精品成人 | 日韩一区二区超清视频 | 欧美日韩三| 5060午夜一级毛片免费观看 | 精品一久久香蕉国产线看播放 | 在线性爱视频 | 一区二区三区在线播放视频 | 九色精品视频在线观看 | 久热中文字幕在线精品免费 | 日本特级| 99久热在线精品视频播放6 | 亚洲国产伦理 | 精品免费视在线视频观看 | 国产精品爱久久久久久久9999 | 亚洲破处视频 | 色日本在线 |