Maison >développement back-end >Tutoriel XML/RSS >Exemple de code pour fusionner les informations de groupe à l'aide de XML FOR PATH (image et texte)

Exemple de code pour fusionner les informations de groupe à l'aide de XML FOR PATH (image et texte)

黄舟
黄舟original
2017-03-20 16:35:411755parcourir


Récemment, lors de l'exécution de fonctions statistiques, il est souvent nécessaire de fusionner le regroupement du contenu si vous utilisez uniquement la fonction d'agrégation basée sur le groupe. valeurs statistiques​​, si nous traitons la colonne groupée chaîne , nous devons écrire notre propre fonction pour la traiter. Par exemple, s'il existe de telles informations de données : Pour regrouper les données ci-dessus et obtenir des résultats statistiques. :

                                                                                                       La méthode de génération XML
utilisant la technologie T-SQL
                                      Il n'est pas nécessaire d'écrire une fonction pour gérer ce problème.                                                                                                                                                                                               Étant donné que la clause SELECT ne spécifie aucun alias de nom de colonne, les noms de sous-éléments résultants sont les mêmes que les noms de colonnes correspondants dans la clause SELECT. Si aucune information n'est spécifiée pour le chemin, une balise ddd0620b42f67e0c3fae74991e3d1d10 sera ajoutée pour chaque ligne de l'ensemble de lignes.
Instruction SQL :



-- ================================================
-- 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
Par exemple :

2. Vous pouvez choisir de spécifier le nom de l'élément de ligne, pour remplacer la valeur par défaut 63e7ac9c6570100ea8f99cb9e1baaed8. Par exemple, la
requête
suivante renverra un élément 379174ee2741bd72e078af9de1aaf49c correspondant pour chaque ligne de l'ensemble de lignes.

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

Instruction SQL :




Résultat : row



3. Si une chaîne de longueur nulle est spécifiée, aucun élément d'habillage ne sera généré.

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



4. Vous pouvez ajouter un seul élément de niveau supérieur en spécifiant l'option
root
dans l'instruction FOR XML SQL : row
Employee


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


Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn