Должен ли я сохранить 2 вида или я могу объединить в 1? - PullRequest
0 голосов
/ 30 января 2019

У меня сейчас 2 просмотра: t_sdet_part и t_sdet_part_all.t_sdet_part извлекает данные из представления table_mv вместе с созданием строк, которые еще не существуют в table_mv.Затем эти созданные данные объединяются в другое представление для отображения всех записей (t_sdet_part_all).Ниже мой текущий код:

-- view created: t_sdet_part
WITH v as (
      SELECT v.*
      FROM table_mv v
    )
SELECT d.s_date, ig.part_no, ig.i_group, l.s_level, ig.p_category,
       COALESCE(v.qty_ordered, 0) as qty_ordered
FROM (SELECT DISTINCT s_date FROM v) d CROSS JOIN
     (SELECT DISTINCT part_no, i_group, p_category FROM v) ig CROSS JOIN
     (SELECT '80' as s_level FROM DUAL UNION ALL
      SELECT '81' FROM DUAL UNION ALL
      SELECT '95' FROM DUAL UNION ALL
      SELECT '101' FROM DUAL UNION ALL
      SELECT '100' FROM DUAL UNION ALL
      SELECT 'Late' FROM DUAL
     ) l LEFT JOIN
     v
     ON v.s_date = d.s_date AND v.part_no = ig.part_no AND
        v.i_group = ig.i_group AND v.s_level = l.s_level
ORDER BY s_date, part_no, i_group,
    DECODE(s_level, '80', 1, '81', 2, '95', 3, '101', 4, '100', 5, 'Late', 6)

-- view created t_sdet_part_all
SELECT DISTINCT
    t.s_date,
    t.part_no,
    t.i_group,
    t.s_level,
    t.p_category,
    t.qty_ordered,
    v.bucket,
    v.relief_amt,
    v.extreme_amt,
    v.curr_mth_note,
    v.carryover_note
FROM
    t_sdet_part t
    LEFT JOIN table_mv v ON t.s_date = v.s_date
                                              AND t.part_no = v.part_no
ORDER BY
    s_date,
    part_no,
    i_group,
    DECODE(s_level, '80', 1, '81', 2, '95', 3, '101', 4, '100', 5, 'Late', 6)

Они оба извлекают и объединяют данные из table_mv.Я пытаюсь найти способ (если это возможно) объединить оба файла ниже, поэтому мне нужно создать только 1 новое представление вместо 2.

...