for xml path排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了for xml path排序相关的知识,希望对你有一定的参考价值。

我用for xml path 得到以下
beizhuxin Company_Unti
A 1#,2#
B 2#,1#
C 1#,3#,2#
现在我想得到的是
A 1#,2#
B 1#,2#
C 1#,2#,3#
请问怎么实现,我用的是SQL2008
代码是
select a.beizhuxin,LEFT(LIST,LEN(LIST)-1)AS Company_Unti
from (select beizhuxin,(select Company_Unti+',' from (select row_number() over (order by Company_Unti asc) as ID,beizhuxin,States,Company_Unti from GKHNT_MacStats where States=0 and beizhuxin<>'强盛' )b where beizhuxin=c.beizhuxin for XML PATH(''))AS LIST FROM (select row_number() over (order by Company_Unti asc) as ID,beizhuxin,States,Company_Unti from GKHNT_MacStats where States=0 )c group by beizhuxin

参考技术A SELECT b.列1,LEFT(List,LEN(List)-1) as Num FROM (SELECT 列1,(SELECT 列2+',' FROM 表 WHERE 列1=a.列1 FOR XML PATH('')) AS ListFROM 表 a GROUP BY 列1) b
希望对你能有所帮助。本回答被提问者采纳

关于for xml path('')

今天在项目中遇到一个问题,在综合查询的时候,需要把同一个表中,同一个人的某个属性加起来放在一个字段中,这时候需要for xml path(‘‘)

select * from t_Baseinfo bi 
left join 
(     
  select DISTINCT b.PersonID,
     STUFF(
	(
	     select ‘,‘+ a.Features  from t_Special a where a.PersonID=b.PersonID and flag=1 for xml path(‘‘)
       ),1,1,‘‘) as features  
     from t_Special b
)tfeatures on bi.ID=tfeatures.PersonID 
  where Flag=1 and tfeatures.Features like ‘%眼%‘

 其中,先使用  select ‘,‘+ a.Features from t_Special a for xml path(‘‘),把需要放在一个字段中的属性用‘,’拼接放在xml中,

人后用stuff截掉第一个‘,’,起别名 features,由于需要把表中同一personid显得字段防盗一个里  所以需要加上 where a.PersonID=b.PersonID  条件。这样他会根据b表中personid来取值。

 

参考资料:http://www.cnblogs.com/doubleliang/archive/2011/07/06/2098775.html

以上是关于for xml path排序的主要内容,如果未能解决你的问题,请参考以下文章

for-each 并使用 xslt 对 xml 进行排序和分组

xsl:在 for-each-group() 中排序

XSLT 1.0 / 使用条件对每个结果进行排序

利用python处理文档中各字段出现的次数并排序

JAVA 对文件夹下所有文件按文件大小进行排序,请问哪里有问题?

C#list排序