-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

提前致谢

4

2 回答 2

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

于 2013-02-15T21:56:55.937 回答
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
于 2013-02-15T21:58:02.777 回答