2011-07-15 56 views
0

我想在下面的列執行「不同」,但似乎無法得到格式正確:SQL - 如何使用不同的兩列聯合查詢

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

'DISTINCT'應用於查詢返回的所有列。它不能獨立應用於單個列。 –

+0

我甚至在SELECT語句中看不到C_TYP_SYS_IDV。 –

+0

由於JNK在下面說了使用按功能分組。查看http://www.sql-tutorial.com/sql-group-by-sql-tutorial/ – Gage

回答

4

您不能在列表中的幾個字段上使用DISTINCT

這些DISTINCT值表示行。如果您只想使用那些DISTINCT行,則需要使用GROUP BY子句。你能否進一步解釋你的情況?