码迷,mamicode.com
首页 > 数据库 > 详细

SQL SERVER里行记录合并

时间:2015-05-21 12:52:59      阅读:254      评论:0      收藏:0      [点我收藏+]

标签:sql server   for xml path   

在表PO中有以下列:PO#,Styel#,Color以及Quantity,其中同一个PO#可能会有不同的Style#,同一个PO#与Style#可能有不同的Color,现在要求是:把PO#与Style#相同的记录的Color与Quantity算出来,插入到一个新表中去,如:
PO#        Style#        Color        Quantity
A              01              Red          10
A              01              Blue          20
B              02              Red          10
B              03              Blue          30

要得到表如下:
PO#  Style#  Color              Quantity
A         01          Red,Blue         30
B          02          Red                 10
B          03          Blue                30

可用如下方法得到所有要插入新表的数据:

SELECT PO#,STYLE#,(CASE COLOR WHEN ‘‘ THEN ‘‘ ELSE LEFT(COLOR,LEN(COLOR)-1) END) COLOR,QUANTITY 
FROM (
SELECT DISTINCT PO#,STYLE#,COLORLIST AS COLOR,
 (
  SELECT SUM(Quantity) FROM PO WHERE PO#=B.PO# AND STYLE#=B.STYLE#
 ) QUANTITY
FROM (
  SELECT PO#,STYLE#,
  (
   SELECT COLOR+‘,‘ 
   FROM PO 
   WHERE PO#=A.PO# AND STYLE#=A.STYLE# FOR XML PATH(‘‘)
  ) AS COLORLIST
  FROM PO AS A
 ) B
) C


SQL SERVER里行记录合并

标签:sql server   for xml path   

原文地址:http://1690116.blog.51cto.com/1680116/1653444

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!