fggweert 发表于 2015-5-22 10:24:31

SQL SERVER里行记录合并

在表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
可用如下方法得到所有要插入新表的数据:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
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



页: [1]
查看完整版本: SQL SERVER里行记录合并