2017-02-23 14 views
1

私は、ユーザーテーブル、電子メールテーブル、およびリレーショナル電子メールテーブルを持っています。いくつかのユーザーは複数の電子メールアドレスを持っています。 使用XPathで単一行の値を取得する方法は?

もちろん
select U.Id,U.Name,E.Name from RelationalEmail AS RE 
INNER JOIN Email AS E ON E.Id = RE.EmailId 
INNER JOIN User AS U ON U.Id=RE.userId 

は、私はこのような結果を得た場合:

UserId Name  Email  
1   Olcay [email protected], [email protected] 
2   John  [email protected], [email protected] 
:私はのような結果を取得しようと

UserId Name  Email 
1   Olcay [email protected] 
1   Olcay [email protected] 
2   John  [email protected] 
2   John  [email protected] 

しかし、私は、ユーザーの繰り返しをしたくない、

私の人物表:

UserId Name  
    1   Olcay  
    2   John 

マイメール表:

EmailId Name 
    7   [email protected] 
    8   [email protected] 
    9   [email protected] 
    10  [email protected] 

マイRelationalEmail表:

Id userId EmailId 
    1  1  7 
    2  1  8 
    3  2  9 
    4  2  10 

先生は、私は、XPathでそれを行うべきであると述べました。しかし、私はXPathを知らない。私はそれを探しましたが、私の質問に対する答えが見つからないか、理解できませんでした。それは常にnameごとに2つのemailsある場合は事前

+0

[this](http://stackoverflow.com/questions/273238/how-to-use-group-by-to-concatenate-strings-in-sql-server)の回答を参照してください。 –

+0

詳細を共有します。現在、私はこの問題が 'XPath'にどのように関係しているのかわかりません – Andersson

答えて

1

おかげで、その後、ここでは一つの方法

select UserId, 
     Name, 
     Email = Min(Email), 
     Email2 = Max(Email) 
From yourtable 
Group by UserId, 
     Name 

あなたはnameあたりemailsN数を持つことができるなら、あなたはdynamic pivotが必要です。

関連する問題