0

回答してくださった方々、どうもありがとうございました。table1 からデータを取得し、table2 のようなデータを出力する SQL サーバーの方法はありますか?

ありがとう!

表1:

+---------+-----------+----------+------------------+
|  Name   |    DOB    | Agent ID |    Agent Name    |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444     | Smith            |  
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444     | John             |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444     | Larry            |
+---------+-----------+----------+------------------+

表 2:

+---------+-----------+----------+------------------+
|  Name   |    DOB    | Agent ID |    Agent Name    |
+---------+-----------+----------+------------------+
| subject | 4/20/1960 | 4444     | Smith,John,Larry |
+---------+-----------+----------+------------------+
4

2 に答える 2

2

SQL Server 2005 以降の場合、STUFF & FOR XML PATH を使用してコンマ区切りのリストを作成します。

SELECT DISTINCT
       t.name,
       t.dob,
       t.agentid,
       STUFF(ISNULL(SELECT ', ' + x.agentname
                      FROM TABLE1 x
                     WHERE x.agentid = t.agentid
                  GROUP BY x.agentname
                   FOR XML PATH ('')), ''), 1, 2, '')
  FROM TABLE1 t
于 2010-06-23T00:58:55.140 に答える
1
SELECT DISTINCT t.Name、t.DOB、t.AgentID、x.AgentName
FROM テーブル1 t
CROSS APPLY (SELECT CASE WHEN ROW_NUMBER() OVER (ORDER BY AgentName) = 1
                         THEN '' ELSE ', ' END + エージェント名
             FROM テーブル 1
             WHERE AgentID = t.AgentID
             AND AgentName IS NOT NULL
             FOR XML PATH(''))x(エージェント名)
于 2010-06-23T02:19:22.967 に答える