Attempting to simplify a complicated SQL statement with CASE expression

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • francismariani
    New Member
    • Mar 2010
    • 2

    Attempting to simplify a complicated SQL statement with CASE expression

    I'm sorry to post this complex SQL statement - I'm trying to simplify it.

    Code:
    SELECT
    CASE
      WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
        ('D2192', 'D3155', 'D3211', 'D3212', 'D3213', 'D3214',
         'D3215', 'D3216', 'D3217', 'D3218', 'D3220', 'D3222',
         'D3325', 'D3334', 'D3335', 'D3337', 'D3338', 'D3424',
         'D3425', 'D3488', 'D3600', 'D3739', 'D3744', 'D3745',
         'D3793', 'D3795', 'D3796')
        THEN 'Private Banking'
      WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
        ('D2000', 'D3240')
        THEN 'Direct Banking'
      WHEN
        ((SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD = 'D3553') OR
         (SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '3553%') OR
          ((SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355354%' OR
            SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355355%') AND
            SYS1.S1_REPTG_RESP_F.DIVISION_NODE = 'U7001')) AND
        NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355357%' AND
        NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355358%' AND
        (SYS1.S1_CL_MG_ACT_D.REFRL_ID IS NULL OR
         (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'S%' AND
          (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'I%')))
        THEN 'Broker Direct'
        ELSE 'Total Bank Excl. BD, DB, PB'
    END AS BUS_CHANNEL,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
    SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
    SYS1.S1_REPTG_RESP_F.NODE_NM,
    COUNT(SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO)
    
    FROM
    SYS1.S1_CL_MG_ACT_D,
    SYS1.S1_REPTG_RESP_F,
    SYS1.S1_CL_MG_ACT_F
    
    WHERE
    (SYS1.S1_REPTG_RESP_F.RESP_NODE_ID = SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_ID) AND
    (SYS1.S1_CL_MG_ACT_F.SP_ACT_KEY = SYS1.S1_CL_MG_ACT_D.SP_ACT_KEY) AND
    (SYS1.S1_CL_MG_ACT_F.TIME_DIM_KEY = 37550) AND
    (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_END_DT >= '2010-01-31') AND
    (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_START_DT <= '2010-01-01') AND
    (SYS1.S1_REPTG_RESP_F.TIME_DIM_KEY = 37550) AND
    (SYS1.S1_CL_MG_ACT_F.LN_STAT_CD = 'A') AND
    (SYS1.S1_CL_MG_ACT_D.NO_DWELLING_UNIT <= 6) AND
    (SYS1.S1_CL_MG_ACT_D.MG_SECUR_TYP_CD <> '3') AND
    (SYS1.S1_CL_MG_ACT_D.MG_PROP_TYPE_CD = '1') AND
    (SYS1.S1_CL_MG_ACT_D.INVS_REF_NO NOT IN (70001, 70002)) AND
    NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355356%' AND
    NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355359%'
    
    GROUP BY
    CASE
      WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
        ('D2192', 'D3155', 'D3211', 'D3212', 'D3213', 'D3214',
         'D3215', 'D3216', 'D3217', 'D3218', 'D3220', 'D3222',
         'D3325', 'D3334', 'D3335', 'D3337', 'D3338', 'D3424',
         'D3425', 'D3488', 'D3600', 'D3739', 'D3744', 'D3745',
         'D3793', 'D3795', 'D3796')
        THEN 'Private Banking'
      WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
        ('D2000', 'D3240')
        THEN 'Direct Banking'
      WHEN
        ((SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD = 'D3553') OR
         (SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '3553%') OR
          ((SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355354%' OR
            SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355355%') AND
            SYS1.S1_REPTG_RESP_F.DIVISION_NODE = 'U7001')) AND
        NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355357%' AND
        NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355358%' AND
        (SYS1.S1_CL_MG_ACT_D.REFRL_ID IS NULL OR
         (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'S%' AND
          (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'I%')))
        THEN 'Broker Direct'
        ELSE 'Total Bank Excl. BD, DB, PB'
    END,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
    SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
    SYS1.S1_REPTG_RESP_F.NODE_NM
    
    ORDER BY
    CASE
      WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
        ('D2192', 'D3155', 'D3211', 'D3212', 'D3213', 'D3214',
         'D3215', 'D3216', 'D3217', 'D3218', 'D3220', 'D3222',
         'D3325', 'D3334', 'D3335', 'D3337', 'D3338', 'D3424',
         'D3425', 'D3488', 'D3600', 'D3739', 'D3744', 'D3745',
         'D3793', 'D3795', 'D3796')
        THEN 'Private Banking'
      WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
        ('D2000', 'D3240')
        THEN 'Direct Banking'
      WHEN
        ((OWN_RESP_NODE_CD = 'D3553') OR
         (SRC_SYS_ACT_NO LIKE '3553%') OR
          ((SRC_SYS_ACT_NO LIKE '355354%' OR SRC_SYS_ACT_NO LIKE '355355%') AND DIVISION_NODE = 'U7001'))
         AND NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355357%'
         AND NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355358%'
         AND (SYS1.S1_CL_MG_ACT_D.REFRL_ID IS NULL OR (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'S%' AND NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'I%'))
        THEN 'Broker Direct'
        ELSE 'Total Bank Excl. BD, DB, PB'
    END,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
    SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
    SYS1.S1_REPTG_RESP_F.NODE_NM
    I would like to avoid having to recode the CASE expression for the GROUP BY and ORDER BY. The above example is a simple query - I have a more complex one. Also, I require second CASE expression that depends on the conditions in the first one.

    I thought this might do the trick, but I'm stuck on the ON clause:

    Code:
    SELECT
    D2.BUS_CHANNEL.
    D2.DIVISION_NODE,
    D2.DIVISION_NODE_NM,
    D2.OWN_RESP_NODE_CD,
    D2.S1_REPTG_RESP_F.NODE_NM,
    COUNT(D2.SRC_SYS_ACT_NO)
    
    FROM
    SYS1.S1_CL_MG_ACT_D D1,
    SYS1.S1_REPTG_RESP_F,
    SYS1.S1_CL_MG_ACT_F
    
    JOIN
    
      (
      SELECT
      CASE
        WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
          ('D2192', 'D3155', 'D3211', 'D3212', 'D3213', 'D3214',
           'D3215', 'D3216', 'D3217', 'D3218', 'D3220', 'D3222',
           'D3325', 'D3334', 'D3335', 'D3337', 'D3338', 'D3424',
           'D3425', 'D3488', 'D3600', 'D3739', 'D3744', 'D3745',
           'D3793', 'D3795', 'D3796')
          THEN 'Private Banking'
        WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
          ('D2000', 'D3240')
          THEN 'Direct Banking'
        WHEN
          ((SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD = 'D3553') OR
           (SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '3553%') OR
            ((SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355354%' OR
              SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355355%') AND
              SYS1.S1_REPTG_RESP_F.DIVISION_NODE = 'U7001')) AND
          NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355357%' AND
          NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355358%' AND
          (SYS1.S1_CL_MG_ACT_D.REFRL_ID IS NULL OR
           (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'S%' AND
            (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'I%')))
          THEN 'Broker Direct'
          ELSE 'Total Bank Excl. BD, DB, PB'
      END AS BUS_CHANNEL,
      SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
      SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
      SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
      SYS1.S1_REPTG_RESP_F.NODE_NM,
      SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO
    
      FROM
      SYS1.S1_CL_MG_ACT_D,
      SYS1.S1_REPTG_RESP_F,
      SYS1.S1_CL_MG_ACT_F
    
      WHERE
      (SYS1.S1_REPTG_RESP_F.RESP_NODE_ID = SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_ID) AND
      (SYS1.S1_CL_MG_ACT_F.SP_ACT_KEY = SYS1.S1_CL_MG_ACT_D.SP_ACT_KEY) AND
      (SYS1.S1_CL_MG_ACT_F.TIME_DIM_KEY = 37550) AND
      (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_END_DT >= '2010-01-31') AND
      (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_START_DT <= '2010-01-01') AND
      (SYS1.S1_REPTG_RESP_F.TIME_DIM_KEY = 37550) AND
      (SYS1.S1_CL_MG_ACT_F.LN_STAT_CD = 'A') AND
      (SYS1.S1_CL_MG_ACT_D.NO_DWELLING_UNIT <= 6) AND
      (SYS1.S1_CL_MG_ACT_D.MG_SECUR_TYP_CD <> '3') AND
      (SYS1.S1_CL_MG_ACT_D.MG_PROP_TYPE_CD = '1') AND
      (SYS1.S1_CL_MG_ACT_D.INVS_REF_NO NOT IN (70001, 70002)) AND
      NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355356%' AND
      NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355359%'
      ) D2
    
    ON D1.SRC_SYS_ACT_NO = D2.SRC_SYS_ACT_NO
    
    GROUP BY
    D2.BUS_CHANNEL,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
    SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
    SYS1.S1_REPTG_RESP_F.NODE_NM
    
    ORDER BY
    D2.BUS_CHANNEL,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
    SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
    SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
    SYS1.S1_REPTG_RESP_F.NODE_NM
    The error I get is:
    42972(-338)[IBM][CLI Driver][DB2/AIX64] SQL0338N An ON clause associated with a JOIN operator or in a MERGE statement is not valid. SQLSTATE=42972
    This makes sense, but I don't know how to code the correct ON clause.

    Thank you for any suggestions you may have.

    Francis.
  • cburnett
    New Member
    • Aug 2007
    • 57

    #2
    The ORDER BY is easy as you can use
    Code:
    ORDER BY 1
    to sort by the first column.

    To get rid of the duplication completely, use the WITH clause:

    Code:
    WITH EVAL_TABLE(BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM, SRC_SYS_ACT_NO) AS (# SELECT
    # CASE
    #   WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
    #     ('D2192', 'D3155', 'D3211', 'D3212', 'D3213', 'D3214',
    #      'D3215', 'D3216', 'D3217', 'D3218', 'D3220', 'D3222',
    #      'D3325', 'D3334', 'D3335', 'D3337', 'D3338', 'D3424',
    #      'D3425', 'D3488', 'D3600', 'D3739', 'D3744', 'D3745',
    #      'D3793', 'D3795', 'D3796')
    #     THEN 'Private Banking'
    #   WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
    #     ('D2000', 'D3240')
    #     THEN 'Direct Banking'
    #   WHEN
    #     ((SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD = 'D3553') OR
    #      (SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '3553%') OR
    #       ((SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355354%' OR
    #         SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355355%') AND
    #         SYS1.S1_REPTG_RESP_F.DIVISION_NODE = 'U7001')) AND
    #     NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355357%' AND
    #     NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355358%' AND
    #     (SYS1.S1_CL_MG_ACT_D.REFRL_ID IS NULL OR
    #      (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'S%' AND
    #       (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'I%')))
    #     THEN 'Broker Direct'
    #     ELSE 'Total Bank Excl. BD, DB, PB'
    # END AS BUS_CHANNEL,
    # SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
    # SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
    # SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
    # SYS1.S1_REPTG_RESP_F.NODE_NM,
    # SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO
    #  
    # FROM
    # SYS1.S1_CL_MG_ACT_D,
    # SYS1.S1_REPTG_RESP_F,
    # SYS1.S1_CL_MG_ACT_F
    #  
    # WHERE
    # (SYS1.S1_REPTG_RESP_F.RESP_NODE_ID = SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_ID) AND
    # (SYS1.S1_CL_MG_ACT_F.SP_ACT_KEY = SYS1.S1_CL_MG_ACT_D.SP_ACT_KEY) AND
    # (SYS1.S1_CL_MG_ACT_F.TIME_DIM_KEY = 37550) AND
    # (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_END_DT >= '2010-01-31') AND
    # (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_START_DT <= '2010-01-01') AND
    # (SYS1.S1_REPTG_RESP_F.TIME_DIM_KEY = 37550) AND
    # (SYS1.S1_CL_MG_ACT_F.LN_STAT_CD = 'A') AND
    # (SYS1.S1_CL_MG_ACT_D.NO_DWELLING_UNIT <= 6) AND
    # (SYS1.S1_CL_MG_ACT_D.MG_SECUR_TYP_CD <> '3') AND
    # (SYS1.S1_CL_MG_ACT_D.MG_PROP_TYPE_CD = '1') AND
    # (SYS1.S1_CL_MG_ACT_D.INVS_REF_NO NOT IN (70001, 70002)) AND
    # NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355356%' AND
    # NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355359%')
    SELECT BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM, COUNT(SRC_SYS_ACT_NO) FROM EVAL_TABLE GROUP BY BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM ORDER BY BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM

    Comment

    • francismariani
      New Member
      • Mar 2010
      • 2

      #3
      cburnett,

      Thank you for your response.

      This works perfectly!

      Code:
      WITH EVAL_TABLE(BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM, SRC_SYS_ACT_NO) AS
        (
        SELECT
          CASE
            WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
              ('D2192', 'D3155', 'D3211', 'D3212', 'D3213', 'D3214',
               'D3215', 'D3216', 'D3217', 'D3218', 'D3220', 'D3222',
               'D3325', 'D3334', 'D3335', 'D3337', 'D3338', 'D3424',
               'D3425', 'D3488', 'D3600', 'D3739', 'D3744', 'D3745',
               'D3793', 'D3795', 'D3796')
              THEN 'Private Banking'
            WHEN SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD IN
              ('D2000', 'D3240')
              THEN 'Direct Banking'
            WHEN
              ((SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD = 'D3553') OR
               (SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '3553%') OR
                ((SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355354%' OR
                  SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355355%') AND
                  SYS1.S1_REPTG_RESP_F.DIVISION_NODE = 'U7001')) AND
              NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355357%' AND
              NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355358%' AND
              (SYS1.S1_CL_MG_ACT_D.REFRL_ID IS NULL OR
               (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'S%' AND
                (NOT SYS1.S1_CL_MG_ACT_D.REFRL_ID LIKE 'I%')))
              THEN 'Broker Direct'
              ELSE 'Total Bank Excl. BD, DB, PB'
          END AS BUS_CHANNEL,
          SYS1.S1_REPTG_RESP_F.DIVISION_NODE,
          SYS1.S1_REPTG_RESP_F.DIVISION_NODE_NM,
          SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_CD,
          SYS1.S1_REPTG_RESP_F.NODE_NM,
          SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO
      
          FROM
          SYS1.S1_CL_MG_ACT_D,
          SYS1.S1_REPTG_RESP_F,
          SYS1.S1_CL_MG_ACT_F
      
          WHERE
          (SYS1.S1_REPTG_RESP_F.RESP_NODE_ID = SYS1.S1_CL_MG_ACT_D.OWN_RESP_NODE_ID) AND
          (SYS1.S1_CL_MG_ACT_F.SP_ACT_KEY = SYS1.S1_CL_MG_ACT_D.SP_ACT_KEY) AND
          (SYS1.S1_CL_MG_ACT_F.TIME_DIM_KEY = 37550) AND
          (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_END_DT >= '2010-01-31') AND
          (SYS1.S1_CL_MG_ACT_D.ACT_PRFL_START_DT <= '2010-01-01') AND
          (SYS1.S1_REPTG_RESP_F.TIME_DIM_KEY = 37550) AND
          (SYS1.S1_CL_MG_ACT_F.LN_STAT_CD = 'A') AND
          (SYS1.S1_CL_MG_ACT_D.NO_DWELLING_UNIT <= 6) AND
          (SYS1.S1_CL_MG_ACT_D.MG_SECUR_TYP_CD <> '3') AND
          (SYS1.S1_CL_MG_ACT_D.MG_PROP_TYPE_CD = '1') AND
          (SYS1.S1_CL_MG_ACT_D.INVS_REF_NO NOT IN (70001, 70002)) AND
          NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355356%' AND
          NOT SYS1.S1_CL_MG_ACT_D.SRC_SYS_ACT_NO LIKE '355359%'
          )
      
      SELECT
      BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM, COUNT(SRC_SYS_ACT_NO)
      FROM EVAL_TABLE
      GROUP BY BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM
      ORDER BY BUS_CHANNEL, DIVISION_NODE, DIVISION_NODE_NM, OWN_RESP_NODE_CD, NODE_NM

      Comment

      Working...