-1

クエリ出力がコンマ区切りデータの列を表示するクエリの作成について助けが必要です。

1対多の関係を持つ2つのテーブルがあります。テーブルのすべてのレコードを 1 つのレコードで出力し、多数のレコードを持つテーブルからカンマ区切りのデータを 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 に答える