selectパーツごとに複雑な式を配置するorder byか、逆REPLACE(REPLACE(S.NAME,',','-'),'_x','-x')に選択リストに式を追加する必要があります。
SELECT DISTINCT
    AH.NAME||','||
    REPLACE(A.ACTIVE_DC,',','/')||','||
    REPLACE(A.PASSIVE_DC,',','/')||','||    
    REPLACE(H.ENVIRONMENT,',','/')||','||
    REPLACE(REPLACE(S.NAME,',','-'),'_x','-x')||','||
    H.FULL_NAME||','||
    H.PRIMARY_IP||','||
    H.COMPLIANCE||','||
    H.OS
FROM
    HOST H
FULL OUTER JOIN
    APP_HOST AH ON
        AH.ID_2 = H.ID
FULL OUTER JOIN
    HOST_SVR HS ON
        HS.ID_1 = H.ID
FULL OUTER JOIN 
    APP A ON
        AH.ID_1 = A.ID          
FULL OUTER JOIN
    SVR S ON
        HS.ID_2 = S.ID     
WHERE S.NAME IS NOT NULL     
ORDER BY
    -- same as selected
    AH.NAME||','||
    REPLACE(A.ACTIVE_DC,',','/')||','||
    REPLACE(A.PASSIVE_DC,',','/')||','||    
    REPLACE(H.ENVIRONMENT,',','/')||','||
    REPLACE(REPLACE(S.NAME,',','-'),'_x','-x')||','||
    H.FULL_NAME||','||
    H.PRIMARY_IP||','||
    H.COMPLIANCE||','||
    H.OS
上記のクエリは、並べ替え順序が最初のクエリと異なるため、タスクの観点から間違った結果を生成します。  
したがって、2番目のオプションを使用してください:
SELECT DISTINCT
    AH.NAME||','||
    REPLACE(A.ACTIVE_DC,',','/')||','||
    REPLACE(A.PASSIVE_DC,',','/')||','||    
    REPLACE(H.ENVIRONMENT,',','/')||','||
    REPLACE(REPLACE(S.NAME,',','-'),'_x','-x')||','||
    H.FULL_NAME||','||
    H.PRIMARY_IP||','||
    H.COMPLIANCE||','||
    H.OS,
    -- next from order by
    AH.NAME_1,
    REPLACE(REPLACE(S.NAME,',','-'),'_x','-x'),
    H.FULL_NAME
FROM
    HOST H
FULL OUTER JOIN
    APP_HOST AH ON
        AH.ID_2 = H.ID
FULL OUTER JOIN
    HOST_SVR HS ON
        HS.ID_1 = H.ID
FULL OUTER JOIN 
    APP A ON
        AH.ID_1 = A.ID          
FULL OUTER JOIN
    SVR S ON
        HS.ID_2 = S.ID     
WHERE S.NAME IS NOT NULL     
ORDER BY
    AH.NAME_1,
    REPLACE(REPLACE(S.NAME,',','-'),'_x','-x'),
    H.FULL_NAME
2 番目のバリアントが機能するのは、すべてのorder by式が構築された文字列に含まれており、最初のバリアントよりも明確な値を生成できないためです。
ただし、フィールドが 1 つだけの結果セットを生成する場合は、サブクエリを使用して 2 つの手順でそれを行う必要があります。
  select 
    full_string
  from (
    SELECT DISTINCT
        (
          AH.NAME||','||
          REPLACE(A.ACTIVE_DC,',','/')||','||
          REPLACE(A.PASSIVE_DC,',','/')||','||    
          REPLACE(H.ENVIRONMENT,',','/')||','||
          REPLACE(REPLACE(S.NAME,',','-'),'_x','-x')||','||
          H.FULL_NAME||','||
          H.PRIMARY_IP||','||
          H.COMPLIANCE||','||
          H.OS
        ) as full_string,
        -- next from order by
        AH.NAME_1,
        REPLACE(REPLACE(S.NAME,',','-'),'_x','-x') S_NAME_REPLACE,
        H.FULL_NAME,
    FROM
        HOST H
    FULL OUTER JOIN
        APP_HOST AH ON
            AH.ID_2 = H.ID
    FULL OUTER JOIN
        HOST_SVR HS ON
            HS.ID_1 = H.ID
    FULL OUTER JOIN 
        APP A ON
            AH.ID_1 = A.ID          
    FULL OUTER JOIN
        SVR S ON
            HS.ID_2 = S.ID     
    WHERE S.NAME IS NOT NULL     
  )
  ORDER BY
      NAME_1,
      S_NAME_REPLACE,
      FULL_NAME
最終クエリに集計式がないため、機能します。
その図は、この SQLFiddleにあります。