簡體   English   中英

刪除重復值

[英]Delete duplicated values

我有一個名為 ac_eeb 的表,它有近 3000 條記錄。 我想將 TIPCOL 列添加到此表中,我可以將其加入 function 以從 ac_sep 獲取。 但是,當我進行連接時,結果給了我比必要的更多的記錄,我看到它給了我重復的值......如何通過我使用的初始代碼刪除重復的值?

SELECT
       emp_codigo as NUMEMP /* Código da Empresa SIM*/
       , CASE
       when categoriaesocial = '101' then 'CLT'
       when categoriaesocial = '901' then 'Estagiário'
       when categoriaesocial = '103' then 'Aprendiz'
       when categoriaesocial = '722' then 'Estatutário'
       end
       as TIPCOL /* Tipo Colaborador Sim*/
       , epg_codigo as NUMCAD /* Cadastro do Colaborador SIM*/
       , dtinicial as INIETB /* Data de Início da Estabilidade SIM */
       , dtfinal as FIMETB /* Data Final da Estabilidade    NÃO */
       , esb_codigo as CODETB /* Código da Estabilidade SIM */
FROM 
      (SELECT  stg.ac_eeb.emp_codigo, stg.ac_eeb.esb_codigo, stg.ac_eeb.epg_codigo, 
             stg.ac_eeb.dtinicial, stg.ac_eeb.dtfinal, stg.ac_sep.categoriaesocial
       FROM stg.ac_eeb
       JOIN stg.ac_sep
       ON ac_eeb.epg_codigo = ac_sep.epg_codigo) AS Estabilidades;  

您在此查詢中使用的聯接沒有任何 where 條件。 因此,查詢的 output 將是表 ac_eeb 和 ac_sep 的笛卡爾積,其中包含重復值。 為避免這種情況,請使用 where 子句過濾掉不必要的數據

重復可能是由於 ac_sep 對某些 epg_codigo 值有不止一個記錄。 如果您知道 ac_sep.categoriasocial 對於具有相同 epg_codigo 的每一行都是相同的,那么您可以在進行聯接之前使用子查詢來獲取唯一值; 像這樣:

SELECT
       emp_codigo as NUMEMP /* Código da Empresa SIM*/
       , CASE
       when categoriaesocial = '101' then 'CLT'
       when categoriaesocial = '901' then 'Estagiário'
       when categoriaesocial = '103' then 'Aprendiz'
       when categoriaesocial = '722' then 'Estatutário'
       end
       as TIPCOL /* Tipo Colaborador Sim*/
       , epg_codigo as NUMCAD /* Cadastro do Colaborador SIM*/
       , dtinicial as INIETB /* Data de Início da Estabilidade SIM */
       , dtfinal as FIMETB /* Data Final da Estabilidade    NÃO */
       , esb_codigo as CODETB /* Código da Estabilidade SIM */
FROM 
      (SELECT  stg.ac_eeb.emp_codigo, stg.ac_eeb.esb_codigo, stg.ac_eeb.epg_codigo, 
             stg.ac_eeb.dtinicial, stg.ac_eeb.dtfinal, stg.ac_sep.categoriaesocial
       FROM stg.ac_eeb
       JOIN (select distinct 
                      epg_codigo
                    , categoriaesocial
             from stg.ac_sep
            ) as ac_sep
       ON ac_eeb.epg_codigo = ac_sep.epg_codigo) AS Estabilidades;  

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM