USP_DATALIST_ORGANIZATIONMERGERHISTORY

List of all mergers for selected organization.

Parameters

Parameter Parameter Type Mode Description
@CONTEXTID uniqueidentifier IN Input parameter indicating the context ID for the data list.

Definition

Copy


CREATE procedure dbo.USP_DATALIST_ORGANIZATIONMERGERHISTORY(@CONTEXTID uniqueidentifier)
as
    set nocount on;

    with ORGMERGERS (ID, SOURCEORG1ID, SOURCEORG2ID, NEWORGID, MERGERDATE)
    as
    (
        --Anchor member definition

        select 
            ORGANIZATIONMERGERHISTORY.ID,
            ORGANIZATIONMERGERHISTORY.SOURCEORG1ID,
            ORGANIZATIONMERGERHISTORY.SOURCEORG2ID,
            ORGANIZATIONMERGERHISTORY.NEWORGID,
            ORGANIZATIONMERGERHISTORY.MERGERDATE
        from dbo.ORGANIZATIONMERGERHISTORY
        where ORGANIZATIONMERGERHISTORY.SOURCEORG1ID = @CONTEXTID
            or ORGANIZATIONMERGERHISTORY.SOURCEORG2ID = @CONTEXTID
            or ORGANIZATIONMERGERHISTORY.NEWORGID = @CONTEXTID

        union all

        --Recursive member definition

        select 
            ORGANIZATIONMERGERHISTORY.ID,
            ORGANIZATIONMERGERHISTORY.SOURCEORG1ID,
            ORGANIZATIONMERGERHISTORY.SOURCEORG2ID,
            ORGANIZATIONMERGERHISTORY.NEWORGID,
            ORGANIZATIONMERGERHISTORY.MERGERDATE
        from dbo.ORGANIZATIONMERGERHISTORY
            inner join ORGMERGERS om
                on (ORGANIZATIONMERGERHISTORY.NEWORGID = om.SOURCEORG1ID or ORGANIZATIONMERGERHISTORY.NEWORGID = om.SOURCEORG2ID) 
                    and ORGANIZATIONMERGERHISTORY.MERGERDATE < om.MERGERDATE
    )

    --Statement that executes the CTE

    select distinct
        om.ID,
        om.SOURCEORG1ID,
        ORG1.NAME as SOURCEORG1NAME,
        om.SOURCEORG2ID,
        ORG2.NAME as SOURCEORG2NAME,
        om.NEWORGID,
        ORGNEW.NAME as NEWORGNAME,
        om.MERGERDATE,
        (case when @CONTEXTID = om.SOURCEORG1ID then 1 else 0 end) as ORGISSOURCE1,
        (case when @CONTEXTID = om.SOURCEORG2ID then 1 else 0 end) as ORGISSOURCE2,
        (case when @CONTEXTID = om.NEWORGID then 1 else 0 end) as ORGISNEW
    from ORGMERGERS om
        inner join dbo.CONSTITUENT ORG1 on om.SOURCEORG1ID = ORG1.ID
        inner join dbo.CONSTITUENT ORG2 on om.SOURCEORG2ID = ORG2.ID
        inner join dbo.CONSTITUENT ORGNEW on om.NEWORGID = ORGNEW.ID
    order by MERGERDATE desc