At Oracle I would like to filter below TABLE as
| COLUMNA | COLUMNB | COLUMNC |
|---|---|---|
| 19 | AAA | PRIMARY |
| 20 | AAA | PRIMARY |
| 8 | AAA | SECONDARY |
| 7 | AAA | SECONDARY |
| 7 | AAA | PRIMARY |
| 8 | AAA | SECONDARY |
| 9 | AAA | SECONDARY |
my expected output is
| COLUMNA | COLUMNB | COLUMNC |
|---|---|---|
| 19 | AAA | PRIMARY |
| 20 | AAA | PRIMARY |
| 7 | AAA | PRIMARY |
| 9 | AAA | SECONDARY |
Logic is Group by COLUMNA and COLUMNB (please evaluate below conditions on grouping.)
- if columnc candidate record (grouped by
COLUMNAandCOLUMNB) includes onlyPRIMARYtakePRIMARY. - if columnc candidate record (grouped by
COLUMNAandCOLUMNB) includes onlySECONDARYtakeSECONDARY. - if columnc candidate records (grouped by
COLUMNAandCOLUMNB) includePRIMARYandSECONDARYset, takePRIMARY. - if columnc candidate records (grouped by
COLUMNAandCOLUMNB) include duplicateSECONDARYset skip record. - imagine this row has 100 columns so I need to fetch row by itself. MAX MIN wont work here.
I have used couple of row_number() functions and where not exists but went into oblivion.
COLUMNA8 value has 2SECONDARYand it's not on your expected output. Are you clear on what you want? Why do you say the logic is unCOLUMNAandCOLUMNBifCOLUMNBalways have the same value?secondaryis the problem.