這篇文章主要介紹了如何利用XML FOR PATH合并分組信息,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)成立與2013年,先為新寧等服務(wù)建站,新寧等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為新寧企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
最近做統(tǒng)計功能的時候經(jīng)常需要用到合并分組內(nèi)容,如果只根據(jù)分組統(tǒng)計數(shù)值用聚合函數(shù)就可以了,如果處理分組后的字符串列呢,我們就必須要自己寫函數(shù)處理了,比如有這樣的數(shù)據(jù)信息:
現(xiàn)在要對上面數(shù)據(jù)進(jìn)行分組,獲取統(tǒng)計結(jié)果:
實現(xiàn)方式一:
-- ================================================ -- Description:合并分組內(nèi)容 -- Author:夏保華 -- Date:2009-08-06 -- ================================================ create table Employees(DepartmentName varchar(50),EmpoyeeName varchar(20)) insert into Employees select '開發(fā)部','小劉' union all select '開發(fā)部','小王' union all select '開發(fā)部','小張' union all select '工程部','老吳' union all select '工程部','老李' union all select '市場部','大兵' union all select '市場部','大黃' union all select '市場部','大蝦' union all select '市場部','大國' go create function Sum_ByGroup(@DepartmentName varchar(50)) returns varchar(8000) as begin declare @ret varchar(8000) set @ret = '' select @ret = @ret+','+EmpoyeeName from Employees where DepartmentName = @DepartmentName set @ret = stuff(@ret,1,1,'') return @ret end go select DepartmentName,dbo.Sum_ByGroup(DepartmentName) as EmployeesList from Employees group by DepartmentName go
實現(xiàn)方式二:利用 T-SQL 技術(shù)生成 XML 的方法
select DepartmentName, stuff (( select ' , ' + EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path( '' )), 1 , 1 , '' ) as EmployeesList from Employees E group by DepartmentName
呵呵,這樣就是不是簡單多了,不用再寫一個函數(shù)去處理這么麻煩了。
擴(kuò)展:For XML Path
1.在該 XML 中,生成的行集中的每個列值都包在元素中。由于 SELECT 子句未指定任何列名別名,因此生成的子元素名稱與 SELECT 子句中相應(yīng)的列名相同。如果未對path指定任何信息,針對行集中的每一行,將添加一個 <row
> 標(biāo)記。
SQL語句:
select DepartmentName,( select '' + EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path) as EmployeesList from Employees E group by DepartmentName
如:
2.您可以選擇指定行元素名稱,以覆蓋默認(rèn)的 <row
>。例如,以下查詢將針對行集中的每一行返回相應(yīng)的 <Employee
> 元素。
SQL語句:
select DepartmentName,( select '' + EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path( ' Employee ' )) as EmployeesList from Employees E group by DepartmentName
結(jié)果:
3.如果指定零長度字符串,則將不生成包裝元素。
結(jié)果:
4.可以通過在 FOR XML 中指定 root選項來添加單個頂級元素
SQL語句:
select DepartmentName,( select '' + EmpoyeeName from Employees where DepartmentName = e.DepartmentName for xml path( ' Employee ' ),root( ' Root ' )) as EmployeesList from Employees E group by DepartmentName
結(jié)果:
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“如何利用XML FOR PATH合并分組信息”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
新聞標(biāo)題:如何利用XMLFORPATH合并分組信息
網(wǎng)頁地址:http://jinyejixie.com/article46/posehg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、網(wǎng)站改版、面包屑導(dǎo)航、定制網(wǎng)站、網(wǎng)站建設(shè)、Google
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)