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 <
> 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
2. Vous pouvez choisir de spécifier le nom de l'élément de ligne, pour remplacer la valeur par défaut <>. Par exemple, la
requête
suivante renverra un élément <
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é.
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
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!