0

次のようなテーブルがあります。

DATAID Last_Name    First_Name   ADDRESS
1         Smith        John         5000 Street
2         Smith        John         6666 Street
3         Doe          Jim          1111 Street
4         Doe          Jim          2222 Street

ご覧のとおり、DATAIDはユニークなフィールドです。同じ従業員の複数の住所が複数の列に記載されています。上記の例のテーブルには含まれていない、各従業員の一意のデータを含む他の多くの列があります。たとえば、電話番号、電子メールなど。

各従業員の複数のレコードを従業員の姓名でグループ化するにはどうすればよいですか? JOIN を実行しようとしましたが、望ましい結果が得られませんでした。DISTINCT on first_name and last_nameまた、複数の列から各従業員の関連データのみを実行して表示するだけで、目的の結果を返す方法もわかりませんでした。

4

1 に答える 1

1

あなたはこれを行うことができます:

SELECT 
  t1.First_Name,
  t1.Last_Name,
  STUFF((
    SELECT ', ' + t2.Address
    FROM Tablename AS t2
    WHERE t1.First_Name = t2.First_name AND t1.Last_Name = t2.Last_Name
    FOR XML PATH(''))
  ,1,2,'') AS Address
FROM tablename AS t1
GROUP BY t1.First_Name,
         t1.Last_Name;

First_nameこれにより、Last_Nameアドレスのコンマで区切られたグループ化された結果が得られます。

ここで実際にそれを見てください:

これにより、次のことが得られます。

| FIRST_NAME | LAST_NAME |                  ADDRESS |
-----------------------------------------------------
|        Jim |       Doe | 1111 Street, 2222 Street |
|       John |     Smith | 5000 Street, 6666 Street |
于 2013-07-08T18:44:58.120 に答える