2017-05-05 9 views
2

以下のクエリは、1つのことを除いて素晴らしい機能を果たします。 エンドユーザーレポートのフィルタとして「WorkStream」という列を使用しています。フィルタであるため、クエリが何かを返すかどうかに関係なく、そこに存在する必要があります。
もちろん、特定のタスクのみが返されるように、where句をクエリ内のフィルタとして使用する必要があります。 問題は、タスクがない場合のワークストリームがある場合、ワークストリームは削除され、レポートフィルタ(ワークストリーム)は機能しません。SQLの戻り値がゼロになるようにフィルタが残ります

私が必要とするのは、このような表ですが、欠落しているワークストリームがある場合、「0」が入ります。 。しかし、ワークストリームが欠落している場合にのみ、それは(最終報告書では、フィルタの下にその報告書は、フィルタを持っているでしょうし、単に表示し、空のテーブルONLYフィルタ名を返します

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を使用してon句にごwhere句を移動あなたのin()のリストにあるとt.Task_Significanceです。

あなたは一致t.Task_Significanceがない場合nullに値を代入するcoalesce()またはisnull()を使用することができます。

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

関連する問題