• There's no real reason to keep beeting up that poor arrcus_rec table... You can actually do everything with a single index scan.

    The following "looks" different but is logically equivilant and should be much more efficient... Especially if the covering index is in place to get rid of the sort operation.

    ----------------------------
    -- create some test data...

    IF OBJECT_ID('tempdb..#arrcus_rec', 'U') IS NOT NULL
    BEGIN DROP TABLE #arrcus_rec; END;

    CREATE TABLE #arrcus_rec (
        cus_cus_no INT NOT NULL PRIMARY KEY,
        cus_dun_no INT NOT NULL,
        cus_lkp_nm VARCHAR(20) NOT NULL,
        cus_nm VARCHAR(20) NOT NULL,
        cus_usg_sts CHAR(1) NOT NULL
        );
    INSERT #arrcus_rec(cus_cus_no, cus_dun_no, cus_lkp_nm, cus_nm, cus_usg_sts) VALUES
        (6625, 5555, 'ABC, INC.', 'ABC, INC.', 'A'),
        (6694, 5555, 'ABC (123)', 'ABC, INC.(123)', 'A'),
        (6699, 5555, 'ABC (123)', 'ABC, INC.(123)', 'B'),
        (6794, 5555, 'ABC (123)', 'ABC, INC.(123)', 'B'),
        (6894, 6666, 'XYZ, 123', 'XYZ, INC.', 'A'),
        (6994, 6666, 'XYZ (123)', 'ABC, INC.(123)', 'B'),
        (7694, 6666, 'XYZ (123)', 'ABC, INC.(123)', 'C');

    ----------------------------
    -- add a covering index...
    CREATE UNIQUE NONCLUSTERED INDEX ix_arrcusrec_cusdunno
        ON #arrcus_rec (cus_dun_no, cus_cus_no)
        INCLUDE (cus_lkp_nm, cus_nm, cus_usg_sts);

    --===============================================================

    ----------------------------
    -- the actual solution...

    WITH
        cte_add_calc AS (
            SELECT
                m. Main,
                job_account = NULLIF(MAX(CASE WHEN m.main = 'Y' THEN ar.cus_cus_no END) OVER (PARTITION BY ar.cus_dun_no), ar.cus_cus_no),
                ar.cus_cus_no,
                ar.cus_lkp_nm,
                ar.cus_nm,
                cnt = COUNT(CASE WHEN ar.cus_usg_sts = 'A' THEN 1 END) OVER (PARTITION BY ar.cus_dun_no)
            FROM
                #arrcus_rec ar
                CROSS APPLY ( VALUES (CASE WHEN ar.cus_nm LIKE '%(%' AND ar.cus_lkp_nm NOT LIKE '%REG%' THEN 'N' ELSE 'Y' END) ) m (main)
            )
    SELECT
        ac.main,
        ac.job_account,
        ac.cus_cus_no,
        ac.cus_lkp_nm,
        ac.cus_nm
    FROM
        cte_add_calc ac
    WHERE
        ac.cnt > 1;

    Results:
    main job_account cus_cus_no cus_lkp_nm    cus_nm
    ---- ----------- ----------- -------------------- --------------------
    NULL   6625   ABC, INC.    ABC, INC.
    6625   6694   ABC (123)    ABC, INC.(123)
    6625   6699   ABC (123)    ABC, INC.(123)
    6625   6794   ABC (123)    ABC, INC.(123)