SQL:从第2列拉出不同的值,形成1列,所有值都来自第2列

时间:2012-01-11 17:48:54

标签: sql

更容易解释我需要用一个例子来做什么;

表看起来像这样

Col 1,       Col 2  
1,            a  
1,            b  
2,            a  
2,            b  
2,            c  

我需要一个查询来返回类似

的内容
1,a,b  
2,a,b,c

2 个答案:

答案 0 :(得分:2)

你需要一行如:

UPDATE t
SET    t.dupcustodians = dt.custadmin
FROM   tbldoc t
       INNER JOIN (SELECT t1._dupid,
                          (SELECT DISTINCT custadmin + ', '
                           FROM   tbldoc t2
                           WHERE  t2._dupid = t1._dupid
                           ORDER  BY custadmin + ', '
                           FOR XML PATH('')) AS custadmin
                   FROM   tbldoc t1
                   GROUP  BY _dupid) AS dt
         ON t._dupid = dt._dupid
            ;

我遇到了类似的问题,其中所有内容都在“CustAdmin”字段中有一个名称,然后它们都有可能重复的_DupID值。我希望它在新字段“DupCustodians”中列出当_DupID值从一个记录到下一个记录时相同的所有名称。因此,将这些名称与您需要的字段名称交换(当然,不要忘记更改表名称),您应该很好。

答案 1 :(得分:2)

好吧,如果您使用的是MySQL,那么您可以这样做:

SELECT Col1, GROUP_CONCAT(Col2)
FROM MyTable
GROUP BY Col1

其他没有MySQL特定GROUP_CONCAT功能的数据库可能需要更复杂的查询。