CREATE TABLE #T1(actID INT,actAdopt VARCHAR(20))INSERT INTO #T1( actID, actAdopt )
SELECT 1,'A' UNION ALL
SELECT 2,'A' UNION ALL
SELECT 1,'B' UNION ALL
SELECT 3,'C' UNION ALL
SELECT 4,'C' UNION ALL
SELECT 4,'A'现在需要生成下列格式的数据
 
1 A、B
2 A
3 C
4 C、A先谢

解决方案 »

  1.   

    select actID,
    stuff((select '、'+actAdopt from #T1 where actID=t.actID for xml path('')),1,1,'')
    from #T1 t
    group by actID
      

  2.   

    1L适用于sql2005及以上的版本,sql2000用函数
      

  3.   


    select actID,stuff((select actAdopt + ',' from tb where actID = t.actID for xml path('')),1,1,'') as actAdopt
    from tb t
    group by actID
      

  4.   

    实例
    列出所有在中国和美国的不同的雇员名:SELECT E_Name FROM Employees_China
    UNION
    SELECT E_Name FROM Employees_USA
    结果
    E_Name 
    Zhang, Hua 
    Wang, Wei 
    Carter, Thomas 
    Yang, Ming 
    Adams, John 
    Bush, George 
    Gates, Bill 注释:这个命令无法列出在中国和美国的所有雇员。在上面的例子中,我们有两个名字相同的雇员,他们当中只有一个人被列出来了。UNION 命令只会选取不同的值。
    UNION ALL
    UNION ALL 命令和 UNION 命令几乎是等效的,不过 UNION ALL 命令会列出所有的值。SQL Statement 1
    UNION ALL
    SQL Statement 2
    使用 UNION ALL 命令
    实例:
    列出在中国和美国的所有的雇员:SELECT E_Name FROM Employees_China
    UNION ALL
    SELECT E_Name FROM Employees_USA
    结果
    E_Name 
    Zhang, Hua 
    Wang, Wei 
    Carter, Thomas 
    Yang, Ming 
    Adams, John 
    Bush, George 
    Carter, Thomas 
    Gates, Bill 
      

  5.   


    下面的例子中使用的原始表:
    Employees_China:
    E_ID E_Name 
    01 Zhang, Hua 
    02 Wang, Wei 
    03 Carter, Thomas 
    04 Yang, Ming Employees_USA:
    E_ID E_Name 
    01 Adams, John 
    02 Bush, George 
    03 Carter, Thomas 
    04 Gates, Bill 
      

  6.   

    http://topic.csdn.net/u/20080612/22/c850499f-bce3-4877-82d5-af2357857872.html?23514
      

  7.   

    select actID,stuff((select actAdopt + ',' from tb where actID = t.actID for xml path('')),1,1,'') as actAdopt
    from tb t
    group by actID