2017-05-05 67 views
2

下面的查詢工作很好,除了一件事情。 我在最終用戶報告中將該列用作「WorkStream」作爲過濾器。由於它是一個過濾器,我需要它在那裏,無論查詢是否返回任何東西。
當然,我必須使用where子句作爲查詢內的過濾器,以便只返回某些任務。 問題是,當我有一個沒有任何task_Significance項目的工作流時,工作流將被刪除,而報表過濾器(Workstream)不起作用。零返回值,所以過濾器仍然是

我需要的是一張看起來像這樣的表格,但如果我有一個缺失的工作流程,那麼它會將「0」全部覆蓋。但是,只有當工作流程缺失將它僅返回過濾器名稱(這樣的報告將有過濾器並且只顯示空表在最終報告中的過濾器下面

enter image description here

這是我的代碼:

 SELECT 
    p.[Workstream] 
    ,T.[Task_Significance] 
    ,COUNT(1) AS Total 
    ,SUM(case when T.[TaskPercentCompleted] >= 100 then 1 else 0 end) AS Actual 
    ,SUM(case when T.[TaskFinishDate] <= DATEADD(DAY, 8-DATEPART(DW, GETDATE()), Convert(date,getdate())) then 1 else 0 end) AS Planned 
    FROM [psmado].[dbo].[MSP_EpmProject_UserView] as P 
     join [PSMADO].[dbo].[MSP_EpmTask_UserView] as T 
     On T.[projectUID] = P.[projectUID] 
    WHERE 
     [Task_Significance] IN('Application', 'Data', 'Interface', 'End User Compute', 'Network', 'Compute Package', 'Data Center', 'CREWS Sites', 'App Design Review', 'Infra Design Review') 
    GROUP BY p.[EnterpriseProjectTypeUID], p.[Workstream],T.[Task_Significance]  

反正有沒有做到這一點?

回答

2

使用left join並移動where條款的on條款。這將返回所有p.[Workstream]和那些t.Task_Significance,它們在您的in()列表中。

當沒有匹配的t.Task_Significance時,您可以使用coalesce()isnull()替換值爲null

select 
    p.[Workstream] 
    , coalesce(T.[Task_Significance], 'none') as Task_Significance 
    , count(1) as Total 
    , sum(case when T.[TaskPercentCompleted] >= 100 then 1 else 0 end) as Actual 
    , sum(case when T.[TaskFinishDate] 
     <= dateadd(day, 8 - datepart(dw, getdate()), Convert(date, getdate())) 
     then 1 else 0 end) as Planned 
from [psmado].[dbo].[msp_EpmProject_UserView] as P 
    left join [psmado].[dbo].[msp_EpmTask_UserView] as T 
    on T.[projectuid] = P.[projectuid] 
    and [Task_Significance] in ('Application', 'Data', 'Interface' 
    , 'End User Compute', 'Network', 'Compute Package', 'Data Center' 
    , 'crews Sites', 'App Design Review', 'Infra Design Review') 
group by 
    p.[EnterpriseProjectTypeuid] 
    , p.[Workstream] 
    , T.[Task_Significance] 
+0

謝謝!像往常一樣偉大! – Bob

相關問題