91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何利用XML FOR PATH合并分組信息

發布時間:2021-07-27 11:02:56 來源:億速云 閱讀:146 作者:小新 欄目:編程語言

這篇文章主要介紹了如何利用XML FOR PATH合并分組信息,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

最近做統計功能的時候經常需要用到合并分組內容,如果只根據分組統計數值用聚合函數就可以了,如果處理分組后的字符串列呢,我們就必須要自己寫函數處理了,比如有這樣的數據信息:
     
     如何利用XML FOR PATH合并分組信息      

     現在要對上面數據進行分組,獲取統計結果:

     如何利用XML FOR PATH合并分組信息      


     實現方式一:
               

-- ================================================
-- Description:合并分組內容
-- Author:夏保華
-- Date:2009-08-06
-- ================================================
create   table   Employees(DepartmentName varchar(50),EmpoyeeName  varchar(20))   
insert into Employees   
select '開發部','小劉' union all
select '開發部','小王' union all
select '開發部','小張' 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

實現方式二:利用 T-SQL 技術生成 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

呵呵,這樣就是不是簡單多了,不用再寫一個函數去處理這么麻煩了。    

     擴展:For XML Path
     1.在該 XML 中,生成的行集中的每個列值都包在元素中。由于 SELECT 子句未指定任何列名別名,因此生成的子元素名稱與 SELECT 子句中相應的列名相同。如果未對path指定任何信息,針對行集中的每一行,將添加一個 <row> 標記。
     
     SQL語句:

select
 DepartmentName,(
select
 
''
+
EmpoyeeName 
from
 Employees 
where
 DepartmentName 
=
 e.DepartmentName 
for
 xml path) 
as
 EmployeesList 
from
 Employees E
group
 
by
 DepartmentName


     如:
     如何利用XML FOR PATH合并分組信息      

     2.您可以選擇指定行元素名稱,以覆蓋默認的 <row>。例如,以下查詢將針對行集中的每一行返回相應的 <Employee> 元素。
     
     SQL語句:

select
 DepartmentName,(
select
 
''
+
EmpoyeeName 
from
 Employees 
where
 DepartmentName 
=
 e.DepartmentName 
for
 xml path(
'
Employee
'
)) 
as
 EmployeesList 
from
 Employees E
group
 
by
 DepartmentName

結果:
     
     如何利用XML FOR PATH合并分組信息      

     3.如果指定零長度字符串,則將不生成包裝元素。
     結果:
     
     如何利用XML FOR PATH合并分組信息      

     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

結果:

     如何利用XML FOR PATH合并分組信息

感謝你能夠認真閱讀完這篇文章,希望小編分享的“如何利用XML FOR PATH合并分組信息”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

盐源县| 临安市| 玉龙| 上蔡县| 洞头县| 清流县| 寿宁县| 岑溪市| 桐柏县| 长治县| 西乡县| 永年县| 黎平县| 塔城市| 永川市| 喀喇沁旗| 延安市| 大庆市| 永城市| 和硕县| 乌拉特后旗| 山西省| 吉安市| 昌邑市| 平安县| 汉中市| 平昌县| 博罗县| 卢湾区| 五峰| 盐边县| 竹山县| 天镇县| 临沧市| 龙口市| 榆树市| 九龙城区| 海口市| 故城县| 绥阳县| 文安县|