none
Erro ao usar EXCEPT RRS feed

  • Pergunta

  • Boa tarde!

    Estou tentando descobrir o que pode esta ocasionando a diferença  entre dois selects ...

    select T.MATRICULA, t.NOME from quant_func_periodo_t  t
    where t.EMPRESA = 01
    and t.ANO= 2014
    and t.MES = 12
    and t.QTD = 1
    EXCEPT
    SELECT V.RD_MAT, V.RA_NOME FROM vw_rh_liquidos_mensais V
    WHERE V.EMPRESA = 01
    AND V.COMP = '201412'

    porém ao executar o select esta aparecendo o seguinte erro:

    Cannot resolve the collation conflict between "Latin1_General_BIN" and "Latin1_General_CI_AS" in the EXCEPT operation

    como posso resolver isso?

    segunda-feira, 27 de março de 2017 18:48

Respostas

  • Acabei de simular o seu erro ,

    quando vc rodar a

    sp_help 

    vc vai perceber que os campos da query nas tabelas estão com os collations diferentes.

    EXEC sp_help @objname ='quant_func_periodo_t'
    
    EXEC sp_help @objname ='vw_rh_liquidos_mensais'

    1) Primeira opção e alterar  o Collation do campo para  Latin1_General_CI_AI

    ALTER TABLE vw_rh_liquidos_mensais ALTER COLUMN [Nome da Coluna Com Colattion diferente] VARCHAR(MAX) COLLATE Latin1_General_CI_AI

    2) vc pode colocar o Collation do banco default,

    SELECT campo COLLATE database_default  from quant_func_periodo_t  t
    EXCEPT
    SELECT campo  COLLATE database_default FROM vw_rh_liquidos_mensais V
    porem nesse caso o SQL server pode jogar valores NULL quando não conseguir fazer a comparação


    Wesley Neves

    segunda-feira, 27 de março de 2017 20:31

Todas as Respostas

  • Deleted
    segunda-feira, 27 de março de 2017 19:53
  • Obrigada pela atenção!

    Consegui resolver acrescentando COLLATE DATABASE_DEFAULT

    :)

    ufa

    segunda-feira, 27 de março de 2017 20:23
  • Acabei de simular o seu erro ,

    quando vc rodar a

    sp_help 

    vc vai perceber que os campos da query nas tabelas estão com os collations diferentes.

    EXEC sp_help @objname ='quant_func_periodo_t'
    
    EXEC sp_help @objname ='vw_rh_liquidos_mensais'

    1) Primeira opção e alterar  o Collation do campo para  Latin1_General_CI_AI

    ALTER TABLE vw_rh_liquidos_mensais ALTER COLUMN [Nome da Coluna Com Colattion diferente] VARCHAR(MAX) COLLATE Latin1_General_CI_AI

    2) vc pode colocar o Collation do banco default,

    SELECT campo COLLATE database_default  from quant_func_periodo_t  t
    EXCEPT
    SELECT campo  COLLATE database_default FROM vw_rh_liquidos_mensais V
    porem nesse caso o SQL server pode jogar valores NULL quando não conseguir fazer a comparação


    Wesley Neves

    segunda-feira, 27 de março de 2017 20:31