2013-02-15 86 views
-1

我需要写一个查询的帮助,其中查询输出显示一列包含以逗号分隔的数据的列。在一列中用逗号分隔输出的子查询

我有两个表有一对多的关系。我想编写一个查询,它将输出表中的所有记录与一条记录一起输出,但在具有多条记录的表中的一列中显示逗号分隔的数据。

表1

Col1 Col2 Col3 
a1  1 4 
a2  2 5 
a3  3 6 
a4  7 8 

表2

Col1 Col4 
a1  10 
a1  11 
a1  22 
a2  10 
a2  11 
a3  19 
a3  22 
a3  23 
a4  15 

查询输出:

Col1 Col2 Col3 Col4 
a1  1 4 10,11,22 
a2  2 5 10,11 
a3  3 6 19,22,23 
a4  7 8 15 

在此先感谢

回答

2

您可以使用以下方法:

select t1.col1, 
    t1.col2, 
    t1.col3, 
    left(t2.col4, len(t2.col4)-1) col4 
from table1 t1 
cross apply 
(
    select cast(t2.Col4 as varchar(10)) + ', ' 
    from Table2 t2 
    where t1.col1 = t2.col1 
    FOR XML PATH('') 
) t2 (col4) 

请参阅SQL Fiddle with Demo

或者你可以使用:

select t1.col1, 
    t1.col2, 
    t1.col3, 
    STUFF(
     (SELECT ', ' + cast(t2.Col4 as varchar(10)) 
      FROM Table2 t2 
      where t1.col1 = t2.col1 
      FOR XML PATH ('')) 
      , 1, 1, '') AS col4 
from table1 t1 

SQL Fiddle with Demo

1
SELECT Col1, 
     Col2, 
     Col3, 
     Col4 = SUBSTRING((
          SELECT ',' + af.awardFocusName 
           FROM Table2 t2  
          WHERE t2.Col1 = t1.Col1 
          FOR XML PATH('') 
         ), 2, 1000000) 
    FROM Table1 t1