0

I've found two way to take every record, which shares one column value, among some distinct record set identified each one by a set of WHERE conditions. (The example query are very more clear...)

Do you know a third way more sinthetic? maybe using analytical function?

select a.grup_gruppo_id 
 FROM conf_gruppi_delim a, conf_gruppi_delim b, conf_gruppi_delim c 
 WHERE     a.ASTG_ASSE_TIPO_GRUPPO_ID = 'BASE_TSC'
       AND a.TGAS_TIPGRUPDETT_ASSI_ID = 'C5JqJeruozekiQtN'
       AND a.DELI_VALORE1 = '1RWOoegWqEdL9Vch'
       AND a.DELI_FLAG_ANN = 'N'
       --
       AND b.ASTG_ASSE_TIPO_GRUPPO_ID = 'TIPI_MERCATO'
       AND b.TGAS_TIPGRUPDETT_ASSI_ID = '_tgas_time_f'
       AND b.DELI_VALORE1 = 'ZFLIB'
       AND b.DELI_FLAG_ANN = 'N'
       --
       AND c.ASTG_ASSE_TIPO_GRUPPO_ID = 'SEQUENZA'
       AND c.TGAS_TIPGRUPDETT_ASSI_ID = '_tgas_sefm_f'
       AND c.DELI_VALORE1 = 'LE8IZjuiOHVtxAwi'
       AND c.DELI_FLAG_ANN = 'N'
       --
       AND A.GRUP_GRUPPO_ID = b.GRUP_GRUPPO_ID
       AND b.GRUP_GRUPPO_ID = c.GRUP_GRUPPO_ID 




SELECT GRUP_GRUPPO_ID
  FROM conf_gruppi_delim a
 WHERE     ASTG_ASSE_TIPO_GRUPPO_ID = 'BASE_TSC'
       AND TGAS_TIPGRUPDETT_ASSI_ID = 'C5JqJeruozekiQtN'
       AND DELI_VALORE1 = '1RWOoegWqEdL9Vch'
       AND DELI_FLAG_ANN = 'N'
INTERSECT
SELECT GRUP_GRUPPO_ID
  FROM conf_gruppi_delim a
 WHERE     ASTG_ASSE_TIPO_GRUPPO_ID = 'TIPI_MERCATO'
       AND TGAS_TIPGRUPDETT_ASSI_ID = '_tgas_time_f'
       AND DELI_VALORE1 = 'ZFLIB'
       AND DELI_FLAG_ANN = 'N'
INTERSECT
SELECT GRUP_GRUPPO_ID
  FROM conf_gruppi_delim a
 WHERE     ASTG_ASSE_TIPO_GRUPPO_ID = 'SEQUENZA'
       AND TGAS_TIPGRUPDETT_ASSI_ID = '_tgas_sefm_f'
       AND DELI_VALORE1 = 'LE8IZjuiOHVtxAwi'
       AND DELI_FLAG_ANN = 'N'
Revious
  • 7,816
  • 31
  • 98
  • 147

1 Answers1

1

In this case where you're just filtering on 3 different sets of values

SELECT GRUP_GRUPPO_ID
  FROM conf_gruppi_delim a
 WHERE (ASTG_ASSE_TIPO_GRUPPO_ID, 
        TGAS_TIPGRUPDETT_ASSI_ID, 
        DELI_VALORE1, 
        DELI_FLAG_ANN )  IN 
    ( ('SEQUENZA','_tgas_sefm_f','LE8IZjuiOHVtxAwi','N'),
      ('TIPI_MERCATO','_tgas_time_f','ZFLIB','N'),
      ('BASE_TSC','C5JqJeruozekiQtN','1RWOoegWqEdL9Vch','N') )
 GROUP BY GRUP_GRUPPO_ID
HAVING COUNT( distinct ASTG_ASSE_TIPO_GRUPPO_ID ) = 3
Justin Cave
  • 227,342
  • 24
  • 367
  • 384