TSQL - 从ResultSet中删除重复项并将它们组合在一行中

0 t-sql sql-server-2005

我有一个名为employee的表,其中包含以下字段

Id | Name     | PrimaryEmail1  | PrimaryEmail2 | PrimaryEmail3
1  | JonSkeet | NULL           | NULL          | jonskeet@test.com
1  | JonSkeet | NULL           | Jon@test.com  | jonskeet@test.com
1  | JonSkeet | skeet@test.com | NULL          | jonskeet@test.com
2  | George   | G1@Test.com    | NULL          | NULL
2  | George   | NULL           | G2@test.com   | NULL
2  | George   | NULL           | NULL          | G3@test.com

如何编写TSQL查询以便我可以获得以下结果集?

Id | Name     | PrimaryEmail1  | PrimaryEmail2 | PrimaryEmail3
1  | JonSkeet | skeet@test.com | jon@test.com  | jonskeet@test.com
2  | George   | G1@test.com    | G2@test.com   | G3@test.com

gbn*_*gbn 6

MAX将消除NULL

SELECT
   ID, Name, 
   MAX(PrimaryEmail1) AS PrimaryEmail1,
   MAX(PrimaryEmail2) AS PrimaryEmail2, 
   MAX(PrimaryEmail3) AS PrimaryEmail3
FROM
   employee 
GROUP BY
   ID, Name
Run Code Online (Sandbox Code Playgroud)

但是,您的JonSkeet示例显示PrimaryEmail3是相同的.您是否会期望每个ID +名称有不同的值?如果是这样,除非选择MAX(或MIN偶数),否则不能组合成一行.

这假设Id-Name对也是一致的