SQL SERVER 實現分組合并實現列資料拼接

來源:互聯網
上載者:User

標籤:style   blog   color   os   使用   io   for   ar   資料   

需求情境: SQL SERVER 中組織的資料結構是一個層級關係,現在需要抓出每個組織節點以上的全部組織資訊,資料樣本如下:

ADOrg_ID--------------ParentID-----------------ShortName

001                                                                 頂級組織名稱

001.021                     001                                 二級組織名稱

001.022                     001.021                           三級組織名稱

001.021.211               001.022                           四級組織名稱

001.023                     001.021                            三級組織名稱

現在需要得到的結果為:

 

ADOrg_ID--------------OrgName------------------------------------------ShortName

001                            頂級組織名稱                                                        頂級組織名稱

001.021                     頂級組織名稱,二級組織名稱                                       二級組織名稱

001.022                     頂級組織名稱,二級組織名稱,三級組織名稱                      三級組織名稱

001.021.211               頂級組織名稱,二級組織名稱,三級組織名稱,四級組織名稱    四級組織名稱

001.023                     頂級組織名稱,二級組織名稱,三級組織名稱                      三級組織名稱

 

SQL--------------------------------

 
DECLARE org cursor for select ADOrg_ID,ShortName from ADOrganize DECLARE @ORGID nvarchar(100) DECLARE @ORGSHORTNAME nvarchar(100) DECLARE @RESULT table ( [ID] nvarchar(50) NULL, [OrgInfo] nvarchar(MAX) NULL, [ShortName] nvarchar(50) NULL ) open org; FETCH NEXT FROM org INTO @ORGID,@ORGSHORTNAME WHILE @@FETCH_STATUS=0 BEGIN with node as ( select * from ADOrganize(nolock) where ADOrg_ID=@ORGID union all SELECT par.* FROM ADOrganize(nolock) AS par INNER JOIN node AS RC ON par.ADOrg_ID = RC.ParentID ) INSERT INTO @RESULT SELECT @ORGID,ShortName,@ORGSHORTNAME FROM ADOrganize(nolock) WHERE ADOrg_ID IN (SELECT ADOrg_ID FROM node N ) FETCH NEXT FROM ORG INTO @ORGID,@ORGSHORTNAME END ; CLOSE org; DEALLOCATE org; SELECT ID, data=stuff((SELECT ‘,‘+OrgInfo FROM @RESULT t WHERE ID=t1.ID FOR XML PATH(‘‘)), 1, 1, ‘‘) ,SHORTNAME FROM @RESULT t1 GROUP BY ID,SHORTNAME

 

 

說明:因為沒有想到好的方法所以直接用遊標查詢後對資料進行處理,儲存到暫存資料表中,然後對暫存資料表的資料進行分組,使用 stuff 對需要拼接的資料進行拼接,然後輸出。不曉得是否還有更好的方法,歡迎討論~~~~~~~~~

SQL SERVER 實現分組合并實現列資料拼接

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.