1

私は SQL を初めて使用します (SQL Server 2012 を実行しています)。実行しているクエリはこれらの結果を返しています。

IDNum   Email
----------------
 1      a@a.com
 1      b@b.com
 1      c@c.com
 2      d@d.com
 2      e@e.com
 3      f@f.com
 3      g@g.com
 3      h@h.com
 4      i@i.com
 5      j@j.com
 5      k@k.com

次の結果セット (各 ID に固有のカンマ区切りのリスト) を取得したいと思います。

IDNum   Emails
---------------------------------
 1      a@a.com,b@b.com,c@c.com
 2      d@d.com,e@e.com
 3      f@f.com,g@g.com,h@h.com
 4      i@i.com
 5      j@j.com,k@k.com

私は他の質問からのいくつかの答えに従おうとしましたが、運がありません。私の経験不足と、これで見つけた他のすべての質問は、単一のテーブルからの結果にすぎないと確信しています。それが違いを生む場合、私のクエリは複数のテーブルから結果を取得しています。

SELECT DISTINCT 
    s.idnum, e.email
FROM
    student s
JOIN 
    email e ON e.guid = s.guid
WHERE 
    s.activeYear = 1 AND e.activeEmail = 1

誰でも助けることができますか?ありがとう。

******アップデート******

ここと別のWebサイトでさらにいくつかの記事を読んだ後、次のクエリを使用することになりました。これが将来誰かに役立つことを願っています。

USE databaseName

SELECT s.idnum,
STUFF(( SELECT ',' + e.email AS [text()]
        FROM email e
        WHERE
        e.guid = s.guid AND e.activeEmail = 1
        FOR XML PATH('')
        ), 1, 1, '' )
        AS emails
    FROM student s

WHERE s.activeYear = 1
4

1 に答える 1