2016-07-22 3 views
-1

Все,Oracle SQL - Найти экземпляры значения в группе

У меня есть таблица, которая выглядит следующим образом:

Event_id  Event_Rank  Procedure  Modifier 
--------  ----------  ---------  -------- 
1    1.01   12345   AA 
1    1.02   12345   AB 
1    1.03   67890   ZZ 
2    2.01   12345   AA 
2    2.02   67890   ZZ 

Я пытаюсь запустить Oracle SQL-запрос, который находит в пределах group (Event_ID), любой экземпляр, где есть две одинаковые процедуры. Для события 1, который существует (первые две строки)

Любая помощь была бы принята с благодарностью.

TonyVan

ответ

1

Вы можете попробовать что-то вроде этого:

with w_data as (
     select 1 event_id, 1.01 event_rank, 12345 c_procedure, 'AA' modifier from dual union all 
     select 1 event_id, 1.02 event_rank, 12345 c_procedure, 'AB' modifier from dual union all 
     select 1 event_id, 1.03 event_rank, 67890 c_procedure, 'ZZ' modifier from dual union all 
     select 2 event_id, 2.01 event_rank, 12345 c_procedure, 'AA' modifier from dual union all 
     select 2 event_id, 2.02 event_rank, 67890 c_procedure, 'ZZ' modifier from dual 
     ) 
    Select event_id, event_rank, c_procedure, modifier 
    from (
      select event_id, event_rank, c_procedure, modifier, 
        count(*) over (partition by event_id, c_procedure) dup_chk 
      from w_data 
     ) 
    where dup_chk > 1 
/

    EVENT_ID EVENT_RANK C_PROCEDURE MO 
    ---------- ---------- ----------- -- 
      1  1.01  12345 AA 
      1  1.02  12345 AB 

    2 rows selected. 
+0

идеальный! Это дало мне точный результат, который я искал. – TonyVan

Смежные вопросы