Usuário com melhor resposta
Erro ao usar EXCEPT

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?
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
- Sugerido como Resposta Junior Galvão - MVPMVP segunda-feira, 27 de março de 2017 23:22
- Marcado como Resposta carine.couto segunda-feira, 10 de abril de 2017 19:35
Todas as Respostas
-
Deleted
- Sugerido como Resposta Junior Galvão - MVPMVP segunda-feira, 27 de março de 2017 23:21
-
-
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
- Sugerido como Resposta Junior Galvão - MVPMVP segunda-feira, 27 de março de 2017 23:22
- Marcado como Resposta carine.couto segunda-feira, 10 de abril de 2017 19:35