0

我找到了两种方法来获取共享一个列值的每条记录,其中一些不同的记录集由一组 WHERE 条件标识。(示例查询非常清晰......)

你知道第三种更合成的方式吗?也许使用分析功能?

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'
4

1 回答 1

1

在这种情况下,您只需过滤 3 组不同的值

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
于 2013-07-10T15:42:44.143 回答