UFN_MKTCOMMUNICATIONEFFORT_GETSTATUSINFO_BULK

Return

Return Type
table

Definition

Copy


CREATE function dbo.[UFN_MKTCOMMUNICATIONEFFORT_GETSTATUSINFO_BULK]()
returns table
as
return (
  with [BUSINESSPROCESS_CTE] ([PARAMETERSETID], [DATEADDED], [STATUSCODE]) as
  (
    select
      [BUSINESSPROCESSPARAMETERSETID],
      [DATEADDED],
      cast((case [STATUSCODE]
        when 0 then
          case when [NUMBEROFEXCEPTIONS] = 0 then
            0  --Completed

          else
            1  --Completed with exceptions

          end
        when 1 then 2  --Running

        when 2 then 3  --Did not finish

      end) as tinyint) as [STATUSCODE]
    from dbo.[BUSINESSPROCESSSTATUS]
  )
  select
    [MKTSEGMENTATION].[ID] as [SEGMENTATIONID],

    --STATUSCODE

    (case when [MKTSEGMENTATION].[ACTIVE] = 0 then
       (case when [CALCULATEPROCESS_CTE].[CALCULATEDATE] is null then
          1  --Setup started

        else
          (case when [EXPORTPROCESS_CTE].[EXPORTDATE] is null then
             2  --Counts generated

           else
             --If counts were run again after export, then status should be "counts generated" because we want the last status

             (case when [CALCULATEPROCESS_CTE].[CALCULATEDATE] > [EXPORTPROCESS_CTE].[EXPORTDATE] then
                2  --Counts generated

              else
                3  --File exported

              end)
           end)
        end)
     else
       (case when getdate() < isnull([MKTSEGMENTATION].[MAILDATE], [MKTSEGMENTATION].[ACTIVATEDATE]) then
          4  --Activated

        else
          5  --Past launch date

        end)
     end) as [STATUSCODE],

    [CALCULATEPROCESS_CTE].[CALCULATEDATE],
    [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID] as [CALCULATEPROCESSID],

    [EXPORTPROCESS_CTE].[EXPORTDATE],
    [MKTSEGMENTATIONEXPORTPROCESS].[ID] as [EXPORTPROCESSID],

    [MKTSEGMENTATION].[ACTIVATEDATE],
    [MKTSEGMENTATIONACTIVATEPROCESS].[ID] as [ACTIVATEPROCESSID],

    [MKTSEGMENTATIONREFRESHPROCESS].[DATEREFRESHED],
    [MKTSEGMENTATIONREFRESHPROCESS].[ID] as [REFRESHPROCESSID],

    --ISCALCULATING

    cast((case when [MKTSEGMENTATION].[ACTIVE] = 0 and [CALCULATEPROCESS_CTE].[STATUSCODE] = 2 then 1 else 0 end) as bit) as [ISCALCULATING],

    --ISEXPORTING

    cast((case when [EXPORTPROCESS_CTE].[STATUSCODE] = 2 then 1 else 0 end) as bit) as [ISEXPORTING],

    --ISACTIVATING

    cast((case when [ACTIVATEPROCESS_CTE].[STATUSCODE] = 2 then 1 else 0 end) as bit) as [ISACTIVATING],

    --ISREFRESHING

    cast((case when [MKTSEGMENTATION].[ACTIVE] = 1 and [REFRESHPROCESS_CTE].[STATUSCODE] = 2 then 1 else 0 end) as bit) as [ISREFRESHING],

    --ISREMOVINGMEMBERS

    cast((case when [MKTSEGMENTATION].[ACTIVE] = 1 and [REMOVEMEMBERSPROCESS_CTE].[STATUSCODE] = 2 then 1 else 0 end) as bit) as [ISREMOVINGMEMBERS],

    [CALCULATEPROCESS_CTE].[STATUSCODE] as [CALCULATESTATUSCODE],
    [EXPORTPROCESS_CTE].[STATUSCODE] as [EXPORTSTATUSCODE],
    [ACTIVATEPROCESS_CTE].[STATUSCODE] as [ACTIVATESTATUSCODE],
    [REFRESHPROCESS_CTE].[STATUSCODE] as [REFRESHSTATUSCODE],

    [REMOVEMEMBERSPROCESS_CTE].[REMOVEMEMBERSDATE],
    [MKTUPDATEMAILINGCOUNTSPROCESS].[ID] as [REMOVEMEMBERSPROCESSID],
    [REMOVEMEMBERSPROCESS_CTE].[STATUSCODE] as [REMOVEMEMBERSSTATUSCODE]

  from dbo.[MKTSEGMENTATION]
  left join dbo.[MKTSEGMENTATIONSEGMENTCALCULATEPROCESS] on [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTSEGMENTATIONEXPORTPROCESS] on [MKTSEGMENTATIONEXPORTPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTSEGMENTATIONACTIVATEPROCESS] on [MKTSEGMENTATIONACTIVATEPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTSEGMENTATIONREFRESHPROCESS] on [MKTSEGMENTATIONREFRESHPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  left join dbo.[MKTUPDATEMAILINGCOUNTSPROCESS] on [MKTUPDATEMAILINGCOUNTSPROCESS].[SEGMENTATIONID] = [MKTSEGMENTATION].[ID]
  outer apply (select top 1 [BUSINESSPROCESS_CTE].[DATEADDED] as [CALCULATEDATE], [BUSINESSPROCESS_CTE].[STATUSCODE] from [BUSINESSPROCESS_CTE] where [BUSINESSPROCESS_CTE].[PARAMETERSETID] = [MKTSEGMENTATIONSEGMENTCALCULATEPROCESS].[ID] order by [BUSINESSPROCESS_CTE].[DATEADDED] desc) as [CALCULATEPROCESS_CTE]
  outer apply (select top 1 [BUSINESSPROCESS_CTE].[DATEADDED] as [EXPORTDATE], [BUSINESSPROCESS_CTE].[STATUSCODE] from [BUSINESSPROCESS_CTE] where [BUSINESSPROCESS_CTE].[PARAMETERSETID] = [MKTSEGMENTATIONEXPORTPROCESS].[ID] order by [BUSINESSPROCESS_CTE].[DATEADDED] desc) as [EXPORTPROCESS_CTE]
  outer apply (select top 1 [BUSINESSPROCESS_CTE].[STATUSCODE] from [BUSINESSPROCESS_CTE] where [BUSINESSPROCESS_CTE].[PARAMETERSETID] = [MKTSEGMENTATIONACTIVATEPROCESS].[ID] order by [BUSINESSPROCESS_CTE].[DATEADDED] desc) as [ACTIVATEPROCESS_CTE]
  outer apply (select top 1 [BUSINESSPROCESS_CTE].[STATUSCODE] from [BUSINESSPROCESS_CTE] where [BUSINESSPROCESS_CTE].[PARAMETERSETID] = [MKTSEGMENTATIONREFRESHPROCESS].[ID] order by [BUSINESSPROCESS_CTE].[DATEADDED] desc) as [REFRESHPROCESS_CTE]
  outer apply (select top 1 [BUSINESSPROCESS_CTE].[DATEADDED] as [REMOVEMEMBERSDATE], [BUSINESSPROCESS_CTE].[STATUSCODE] from [BUSINESSPROCESS_CTE] where [BUSINESSPROCESS_CTE].[PARAMETERSETID] = [MKTUPDATEMAILINGCOUNTSPROCESS].[ID] order by [BUSINESSPROCESS_CTE].[DATEADDED] desc) as [REMOVEMEMBERSPROCESS_CTE]
);