Записи слияния T-SQL на основе критериев - PullRequest
1 голос
/ 11 декабря 2010

В SQL Server 2008 у меня ниже таблица Оценка.Я хочу показать Score1 и Score2 вместе для одного и того же ученика.Имя и адрес электронной почты в совокупности однозначно идентифицируют студента (имя или адрес электронной почты также могут отсутствовать, например, Джек и Maya@moon.com).Ожидаемый результат показан как T_Combined.

Счет

Name    Email   Score1  Score2
John    'John@pluto.com'    75  
Peter   'Peter@pluto.com'   34  
Nina    'Nina@pluto.com'    45  
Joseph  'Joseph@pluto.com'  76  
Tom 'Tom@pluto.com' 43  
Sam 'Sam@pluto.com' 76  
Nancy   'Nancy@pluto.com'   12  
Tina    'Tina@pluto.com'    56  
John    'John@mars.com' 98  
Peter   'Peter@mars.com'    12  
Nina    'Nina@mars.com' 45  
Joseph  'Joseph@mars.com'   87  
Tom 'Tom@mars.com'  67  
Sam 'Sam@mars.com'  99  
Nancy   'Nancy@mars.com'    33  
Tina    'Tina@mars.com' 23  
John    'John@pluto.com'        86
Peter   'Peter@pluto.com'       56
Nina    'Nina@pluto.com'        98
Joseph  'Joseph@pluto.com'      78
Tom 'Tom@pluto.com'     12
Sam 'Sam@pluto.com'     45
Nancy   'Nancy@pluto.com'       76
Tina    'Tina@pluto.com'        78
John    'John@mars.com'     98
Peter   'Peter@mars.com'        45
Nina    'Nina@mars.com'     76
Joseph  'Joseph@mars.com'       12
Tom 'Tom@mars.com'      84
Sam 'Sam@mars.com'      27
Nancy   'Nancy@mars.com'        54
Tina    'Tina@mars.com'     50
Jack        10  
'Maya@moon.com'     20

T_Combined

Name    Email   Score1  Score2
John    'John@pluto.com'        86
Peter   'Peter@pluto.com'       56
Nina    'Nina@pluto.com'        98
Joseph  'Joseph@pluto.com'  78  
Tom 'Tom@pluto.com' 43  12
Sam 'Sam@pluto.com' 76  45
Nancy   'Nancy@pluto.com'   12  
Tina    'Tina@pluto.com'    56  
John    'John@mars.com' 98  
Peter   'Peter@mars.com'    12  
Nina    'Nina@mars.com' 45  76
Joseph  'Joseph@mars.com'   87  12
Tom 'Tom@mars.com'  67  84
Sam 'Sam@mars.com'  99  27
Nancy   'Nancy@mars.com'    33  54
Tina    'Tina@mars.com' 23  50
Jack        10  
'Maya@moon.com'     20

Большое спасибо

Создать таблицу Score (Имя varchar (20), Email varchar (20), Score1 int, Score2 int)

вставить в Score (имя, адрес электронной почты, Score1) значения ('John', 'John @ pluto.com', 75) вставить в Score (имяЗначения, Email, Score1) ('Peter', 'Peter @ pluto.com', 34) вставьте в Score (Имя, Email, Score1); значения ('Nina', 'Nina @ pluto.com', 45) вставьте в ScoreЗначения (Name, Email, Score1) («Joseph», «Joseph @ pluto.com», 76) вставляют в значения «Score» (Name, Email, Score1) («Tom», «Tom @ pluto.com», 43)в значения Score (имя, адрес электронной почты, Score1) («Sam», «Sam @ pluto.com», 76) вставьте в значения «Score» (имя, адрес электронной почты, Score1) («Nancy», «Nancy @ pluto.com», 12) вставьте в значения Score (имя, адрес электронной почты, Score1) ('Tina', 'Tina @ pluto.com', 56), вставьте в значения Score (имя, адрес электронной почты, Score1) ('John', 'John@mars.com', 98) вставить в значения Score (имя, адрес электронной почты, Score1) ('Peter', 'Peter @ mars.com', 12) вставить в значения Score (имя, адрес электронной почты, Score1) ('Nina', 'Nina @ mars.com ', 45) вставить в значения Score (имя, адрес электронной почты, Score1) (' Joseph ',' Joseph @ mars.com ', 87) вставить в значения Score (имя, адрес электронной почты, Score1) (' Tom '), 'Tom @ mars.com', 67) вставить в значения Score (имя, адрес электронной почты, Score1) ('Sam', 'Sam @ mars.com', 99) вставить в значения Score (имя, адрес электронной почты, Score1) ('Nancy ',' Nancy @ mars.com ', 33) вставить в значения Score (имя, адрес электронной почты, Score1) (' Tina ',' Tina @ mars.com ', 23)

вставить в Score (имяЗначения, Email, Score2) ('John', 'John @ pluto.com', 86) вставьте в Score (Имя, Email, Score2); значения ('Peter', 'Peter @ pluto.com', 56) вставьте в ScoreЗначения (имя, адрес электронной почты, Score2) («Nina», «Nina @ pluto.com», 98) вставляют в значения «Score» (имя, адрес электронной почты, Score2) («Joseph», «Joseph @ pluto.com», 78)в значения Score (имя, адрес электронной почты, Score2) («Tom», «Tom @ pluto.com», 12) вставьте в значения «Score» (имя, адрес электронной почты, Score2) («Sam», «Sam @ pluto.com», 45) вставить в значения Score (имя, адрес электронной почты, Score2) ('Nancy', 'Nancy @ pluto.com', 76) вставить в значения Score (имя, адрес электронной почты, Score2) ('Tina', 'Tina@pluto.com', 78) вставить в Score (имя, адрес электронной почты, Score2) значения ('John', 'John @ mars.com', 98) вставляют в Score (имя, адрес электронной почты, Score2), значения ('Peter', 'Peter @ mars.com', 45) вставляют в Score (имя,Значения электронной почты, Score2) («Nina», «Nina @ mars.com», 76) вставьте в «Score» (имя, адрес электронной почты, Score2), значения («Joseph», «Joseph @ mars.com», 12) вставьте в «Score» (Значения Name, Email, Score2) («Tom», «Tom @ mars.com», 84) вставляют в «Score» (Имя, Email, Score2), значения («Sam», «Sam @ mars.com», 27) вставляют вЗначения очков (имя, адрес электронной почты, счет2) («Нэнси», «Nancy @ mars.com», 54) вставляются в значения очков (имя, адрес электронной почты, счет2) («Tina», «Tina @ mars.com», 50).

вставить в значения Score (Имя, Score1) ('Jack', 10) вставить в значения Score (Email, Score2) ('Maya @ moon.com', 20)

1 Ответ

2 голосов
/ 11 декабря 2010
select Name, Email, isnull(SUM(Score1),'') as Score1, isnull(SUM(Score2),'') as Score2
    from Score 
    group by Name, Email
...