0

我正在处理一个查询:

SELECT D.PointPerson AS Person, R.[Name] AS Project, ISNULL(P.[Name]+' - '+P.[Description], 'KanBan') AS Sprint, COALESCE(S.[Number], N.IncidentNumber) AS Story, T.[Name] AS Task,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 1 THEN D.[Hours] ELSE 0 END) AS Monday,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 2 THEN D.[Hours] ELSE 0 END) AS Tuesday,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 3 THEN D.[Hours] ELSE 0 END) AS Wednesday,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 4 THEN D.[Hours] ELSE 0 END) AS Thursday,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 5 THEN D.[Hours] ELSE 0 END) AS Friday,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 6 THEN D.[Hours] ELSE 0 END) AS Saturday,
   sum(CASE WHEN DatePart(dw, D.ActivityDate) = 7 THEN D.[Hours] ELSE 0 END) AS Sunday,
   sum(D.[Hours]) AS Total
FROM DailyTaskHours D
LEFT JOIN Task T ON D.TaskId = T.PK_Task 
LEFT JOIN Story S ON T.StoryId = S.PK_Story 
LEFT JOIN NonScrumStory N ON D.NonScrumStoryId = N.PK_NonScrumStory 
LEFT JOIN Sprint P ON S.SprintId = P.PK_Sprint 
LEFT JOIN Product R ON S.ProductId = R.PK_Product
GROUP BY D.PointPerson, R.[Name], P.[Name], P.[Description], S.[Number], N.IncidentNumber, T.[Name]
ORDER BY CASE WHEN ISNULL(P.[Name]+' - '+P.[Description], 'KanBan') = 'KanBan'
    THEN 1
    ELSE 0 END,
    Project ASC,
    Sprint ASC,
    Story ASC,
    Task ASC

如果 Name 和 Dexcription 为 NULL,则单元格将填充 'KanBan ' ISNULL(P.[Name]+' - '+P.[Description], 'KanBan')

这是我想要的工作方式。但是,如果第 3 个单元格为 NULL(T.[Name]),我也希望该单元格为 NULL。

所以如果 P.[Name]+' - '+P.[Description] (Sprint) IS NULL 然后用 KanBan 填充,除非 T.[Name] IS NULL 在这种情况下我也希望 (Sprint) 为 NULL

我怎样才能做到这一点?

4

1 回答 1

3

这是使用的一个很好的理由case

select (case when T.Name is null then NULL
             when P.[Name]+' - '+P.[Description] is NULL then 'KanBan'
             else P.[Name]+' - '+P.[Description]
        end) AS Sprint
于 2013-09-18T14:38:40.780 回答