Сравните разницу последовательных строк в одной таблице - PullRequest
0 голосов
/ 18 июня 2020

Мне нужна помощь в сравнении данных в sql запросе.

Мне нужно сравнить в пределах plan_group_id, какие детали measure_id, имеющие разные min_target и max_target, по сравнению с другим plan_id

Пример:

То есть, мне нужно было сравнить, какие меры плана под одним и тем же plan_grp_id имеют разные значения min и max.

что, если значения:

enter image description here

другой пример:

enter image description here

Ответы [ 2 ]

0 голосов
/ 18 июня 2020

Группировать по всем трем столбцам

select m.plan_id, m.plan_grp_id, m.measure_id
from plan_measure m
group by m.plan_id, m.plan_grp_id, m.measure_id
having min(m.min_target) <> max(m.min_target) or min(m.max_target) <> max(m.max_target);
0 голосов
/ 18 июня 2020

Похоже,

SQL> with plan_measure (measure_id, min_target, max_target) as
  2    (select 111, 10, 10 from dual union all
  3     select 222, 20, 20 from dual union all
  4     select 333, 30, 30 from dual union all
  5     select 111, 33, 55 from dual union all
  6     select 222, 20, 20 from dual union all
  7     select 333, 30, 30 from dual union all
  8     select 111, 10, 10 from dual union all
  9     select 222, 20, 20 from dual union all
 10     select 111, 10, 10 from dual
 11    )
 12  select measure_id
 13  from plan_measure
 14  group by measure_id
 15  having min(min_target) <> max(max_target);

MEASURE_ID
----------
       111

SQL>

Я понятия не имею, что здесь должна делать таблица plan. Это никак не связано с plan_measure (по крайней мере, со мной).

...