【问题标题】:How to get value on a single row with XPath? [duplicate]如何使用 XPath 获取单行的值? [复制]
【发布时间】:2017-07-14 04:12:00
【问题描述】:

我有一个用户表、电子邮件表和一个关系电子邮件表。一些用户拥有多个电子邮件地址。 使用时

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    abc@.com
1         Olcay    acc@.com
2         John     jhn@.com
2         John     hnJ@.com

但我不想重复用户, 我尝试得到如下结果:

UserId    Name     Email      
1         Olcay    abc@.com, acc@.com
2         John     jhn@.com, hnJ@.com

我的人表:

  UserId    Name      
    1         Olcay    
    2         John 

我的电子邮件表:

EmailId    Name
   7         abc@.com
   8         acc@.com
   9         jhn@.com
   10        hnJ@.com

我的 RelationalEmail 表:

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

我的老师说我应该用 XPath 做到这一点。但我不知道 XPath。我对此进行了搜索,但找不到我的问题的答案,或者我无法理解。

提前致谢

【问题讨论】:

  • 查看this答案。
  • 分享更多细节。目前我不明白这个问题与XPath 有什么关系

标签: sql sql-server xpath sql-server-2012


【解决方案1】:

如果每个name 总是两个emails,那么这是一种方法

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

如果每个name 可以拥有N 数量的emails,那么您需要dynamic pivot

【讨论】:

    猜你喜欢
    • 2012-09-06
    • 2012-06-09
    • 1970-01-01
    • 2021-06-28
    • 1970-01-01
    • 1970-01-01
    • 2018-12-30
    • 1970-01-01
    • 2021-11-08
    相关资源
    最近更新 更多