Сжать строки с нулями и дубликатами в одну строку - PullRequest
1 голос
/ 29 мая 2009

Я не уверен, как именно описать то, что я хочу сделать, поэтому я буду использовать надуманный пример

В SQL Server 2005, скажем, у меня есть представление с такими строками, назовите его vwGrades:

ID          AssnDate                AssnTxt       Sally       Ted         Bob
----------- ----------------------- ------------- ----------- ----------- -----------
2999        2007-09-22 00:00:00     Homework #1   20          NULL        NULL
2999        2007-09-22 00:00:00     Homework #1   NULL        0           NULL
2999        2007-09-22 00:00:00     Homework #1   NULL        NULL        24
2999        2007-09-22 00:00:00     Final Exam    57          NULL        NULL
2999        2007-09-22 00:00:00     Final Exam    NULL        0           NULL
2999        2007-09-22 00:00:00     Final Exam    NULL        NULL        35

Как я могу сделать запрос, чтобы я получил это, избавляя себя от всех раздражающих пустых значений и дублирующихся строк?

ID          AssnDate                AssnTxt       Sally       Ted         Bob
----------- ----------------------- ------------- ----------- ----------- -----------
2999        2007-09-22 00:00:00     Homework #1   20          0           24
2999        2007-09-22 00:00:00     Final Exam    57          0           35

Ответы [ 2 ]

6 голосов
/ 29 мая 2009
Select
   ID,
   AssnDate,
   AssnTxt,
   Max(IsNull(Sally,0)) AS Sally,
   Max(IsNull(Ted, 0)) As Ted,
   Max(IsNull(Bob, 0)) As Bob
From vwGrades
Group By
  ID,
  AssnDate,
  AssnTxt
0 голосов
/ 29 мая 2009

Похоже на денормализованную схему, вы должны иметь столбец FirstName вместо Салли Тед и Боба. Это сделало бы запрос намного проще. Можете ли вы рефакторинг?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...