sql - 如何在联合查询中的两列上使用distinct

时间:2011-07-15 18:32:03

标签: sql

我想在以下列上执行“distinct”,但似乎无法正确格式化:

C_TYP_SYS_IDV和I_SYS_IDV

任何想法?

谢谢!

create volatile table dt as (
SELECT 

            gcv.I_SYS_IDV,
             gcv.i_pln,
             gcv.c_typ_cov,
             gcv.d_eff,
             gcv.d_eff_pln,
             gcv.c_sta,
            gcv.d_sta,
            gcv.c_mde_bft_fst,
            gcv.a_bft_fst,
            gcv.c_mde_bft_sec,
             gcv.a_bft_sec,
            gcv.c_mde_bft_trd,
             gcv.a_bft_trd,
             gcv.p_cre_hom,
             gcv.c_cl_rsk,
             gpv.c_val,
             gpv.i_val,
             gcv.c_pol


            FROM Pearl_P.tltc906_gcv gcv,
             pearl_p.tltc912_gpv gpv

              WHERE  gcv.i_pln > 0
            AND gcv.i_pln = gpv.i_pln
            and gpv.i_prv = '36'
            and gcv.c_pol between 'lac100001' and 'lac100004'

         UNION

             SELECT
             gcv.I_SYS_IDV,
             gcv.i_pln,
             gcv.c_typ_cov,
             gcv.d_eff,
             gcv.d_eff_pln,
             gcv.c_sta,
             gcv.d_sta,
             gcv.c_mde_bft_fst,
             gcv.a_bft_fst,
             gcv.c_mde_bft_sec,
             gcv.a_bft_sec,
             gcv.c_mde_bft_trd,
             gcv.a_bft_trd,
             gcv.p_cre_hom,
             gcv.c_cl_rsk,
             gcv.c_pol,
             gpv.i_val,
              ''

        FROM Pearl_P.tltc906_gcv gcv,
        pearl_p.tltc912_gpv gpv


            where NOT EXISTS(
            SELECT 1
            FROM pearl_p.tltc906_gcv gcv,
             pearl_p.tltc912_gpv gpv

            WHERE  gcv.i_pln > 0
            AND gcv.i_pln = gpv.i_pln
            and gpv.i_prv = '36'
            )
        ) with data 
 PRIMARY INDEX (i_sys_idv)
 on commit preserve rows;

1 个答案:

答案 0 :(得分:4)

您无法在列表中的几个字段上执行DISTINCT

这些DISTINCT值表示行。如果您只想使用那些DISTINCT行,则需要使用GROUP BY子句。你能进一步解释一下你的目标吗?