PLSQL - Генерация списка серверов по группам - PullRequest
0 голосов
/ 11 января 2019

Мой стол выглядит как

group1,serverA
group1,serverB
group2,serverA
group3,serverC

Я хочу сгенерировать вывод в PLSQL

group1
serverA
serverB

group2
serverA

group3
serverC

Я знаю, что делал это раньше, но поздно вечером в пятницу я не могу думать, как это сделать.

Я буду продолжать копать, но любая помощь приветствуется!

1 Ответ

0 голосов
/ 11 января 2019

Это был медленный обеденный час:

DECLARE 
  strLast_grp   VARCHAR2(20);
BEGIN
  -- Test statements here
  FOR aRow IN (WITH cteCsv_data AS (SELECT 'group1,serverA' AS CSV FROM DUAL UNION ALL
                                    SELECT 'group1,serverB' AS CSV FROM DUAL UNION ALL
                                    SELECT 'group2,serverA' AS CSV FROM DUAL UNION ALL
                                    SELECT 'group3,serverC' AS CSV FROM DUAL),
                    cteGrp_srv AS  (SELECT TRIM(REGEXP_REPLACE(c.CSV, '(.*),.*', '\1')) AS GRP,
                                           TRIM(REGEXP_REPLACE(c.CSV, '.*,(.*)', '\1')) AS SRV
                                      FROM cteCsv_data c)
               SELECT gs.GRP, gs.SRV
                 FROM cteGrp_srv gs
                 ORDER BY gs.GRP, gs.SRV)
  LOOP
    IF strLast_grp IS NULL OR strLast_grp <> aRow.GRP THEN
      strLast_grp := aRow.GRP;

      IF strLast_grp IS NOT NULL THEN
        DBMS_OUTPUT.PUT_LINE(' ');
      END IF;

      DBMS_OUTPUT.PUT_LINE(aRow.GRP);
    END IF;

    DBMS_OUTPUT.PUT_LINE(aRow.SRV);
  END LOOP;  -- aRow
END;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...