多行合并问题

上周遇到一SQL问题,多行数据合并成一行。 需求是这样的。 设计一表。商品对应的属性和属性值,由于商品可以对应多个属性,每个属性可以对应多个属性值。于是设计了这个表 [caption id="attachment_303" align="alignnone" width="997"] 产品属性和属性值关联表[/caption] 但是先需要做成这样的效果。 [caption id="attachment_304" align="alignnone" width="722"] 产品对应属性和属性值的显示效果[/caption] 这明显是多行合并问题,但是怎么合并却是个难题。苦思多时,没有结果,于是求助强大的google,网上果然有高人相助。 其实原理还是蛮简单的,就是把查询的结果输出成xml,然后读取这个xml,替换掉你要拼接的字段,就ok了。 现贴出核心代码,为自己做记录用。 [code lang="SQL"] SELECT * FROM (SELECT DISTINCT PAttributeID, PAttributeName, ProductID, SortId FROM T_PAttrRelation) a OUTER apply (SELECT pValueNames = STUFF(REPLACE(REPLACE ((SELECT pValueName FROM T_PAttrRelation N WHERE PAttributeID = a.PAttributeID AND PAttributeName = a.PAttributeName AND ProductID = a.ProductID AND SortId = a.SortId FOR XML AUTO),'<N pValueName="', ','), '"/>', ''), 1, 1, '')) N [/code]

你可能感兴趣的:(问题)