2014-01-08 4 views
0

Я работаю над запросом, но StoryNumber возвращается как несколько строк.Объединить строки с тем же значением в определенном столбце

Вот запрос:

SELECT 
    STY.[Number] StoryNumber 
    ,ISNULL(SUM(DTH.[Hours]), 0) AS WorkHours 
    ,MAX(CASE 
      WHEN DTH.Hours != 0 
       THEN DTH.ActivityDate 
      END) AS LatestActivityDate 
FROM Task TSK 
LEFT JOIN DailyTaskHours DTH ON TSK.PK_Task = DTH.TaskId 
LEFT JOIN Story STY ON TSK.StoryId = STY.PK_Story 
LEFT JOIN Sprint SPT ON STY.SprintId = SPT.PK_Sprint 
LEFT JOIN Product PDT ON STY.ProductId = PDT.PK_Product 
GROUP BY LEN(STY.[Number]) 
    ,STY.[Number] 
    ,TSK.[Name] 

Этот запрос является фактически упрощенным и все условия соединения необходимы.

Это выход из вышеупомянутого запроса:

enter image description here

Как я могу совмещать как StoryNumber, и когда Есть несколько таких, как НВК-1 сумма workhours и найти самый высокий activitydate?

ответ

3

Удалите посторонние поля из GROUP BY:

SELECT STY.[Number] StoryNumber 
     ,ISNULL(SUM(DTH.[Hours]), 0) AS WorkHours 
     ,MAX(CASE WHEN DTH.Hours != 0 
       THEN DTH.ActivityDate 
      END) AS LatestActivityDate 
FROM Task TSK 
LEFT JOIN DailyTaskHours DTH ON TSK.PK_Task = DTH.TaskId 
LEFT JOIN Story STY ON TSK.StoryId = STY.PK_Story 
LEFT JOIN Sprint SPT ON STY.SprintId = SPT.PK_Sprint 
LEFT JOIN Product PDT ON STY.ProductId = PDT.PK_Product 
LEFT JOIN [User] USR ON TSK.PointPerson = USR.DisplayName 
GROUP BY STY.[Number] 
Смежные вопросы