Usuário com melhor resposta
Query com problemas

Pergunta
-
Galera tenho a query abaixo, mas está ocorrendo o seguinte erro, como resolver ?
select count(1) QTDE , mas.NM_PRODUTO_COMPLETO from tb_produto prod left join TB_Produto_Master_Data mas on mas.ID_PRODUTO = prod.ID_PRODUTO inner join TB_Produto_Categoria pcat ON pcat.ID_PRODUTO = prod.ID_PRODUTO inner join TB_Categoria cat ON cat.ID_CATEGORIA = pcat.ID_CATEGORIA inner join TB_Categoria cp ON cp.ID_CATEGORIA = cat.ID_CATEGORIA_PAI where prod.FL_PRODUTO_ATIVO = 1 group by mas.NM_PRODUTO_COMPLETO having count(1)>1 and sum(cast(cp.ID_CATEGORIA as tinyint))>=2
Erro
Arithmetic overflow error for data type tinyint, value = 1200.
Obrigado
SirSmart
Respostas
-
Por que voce esta tentando converter ID_CATEGORIA em tinyint?
tinyint só aceita valores até 255
https://msdn.microsoft.com/fr-fr/library/ms187745%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396
O erro é bem claro: 1200 nao pode ser convertido em tinyint. 1200 é maior que 255, não é?
E sinceramente eu nao entendi a logica da sua query? Em em momento a soma da cp.ID_CATEGORIA sera menor ou igual a 2? Note que nao faz sentido.
Outro ponto: essa operacacao count(1)>1 sera sempre falsa, pois count(1) retorna 1 SEMPRE, entao ele nunca sera maior que 1.
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade quinta-feira, 26 de maio de 2016 15:34
- Marcado como Resposta Thales F Quintas sexta-feira, 27 de maio de 2016 12:15
Todas as Respostas
-
Por que voce esta tentando converter ID_CATEGORIA em tinyint?
tinyint só aceita valores até 255
https://msdn.microsoft.com/fr-fr/library/ms187745%28v=sql.120%29.aspx?f=255&MSPPError=-2147217396
O erro é bem claro: 1200 nao pode ser convertido em tinyint. 1200 é maior que 255, não é?
E sinceramente eu nao entendi a logica da sua query? Em em momento a soma da cp.ID_CATEGORIA sera menor ou igual a 2? Note que nao faz sentido.
Outro ponto: essa operacacao count(1)>1 sera sempre falsa, pois count(1) retorna 1 SEMPRE, entao ele nunca sera maior que 1.
William John Adam Trindade
Analyste-programmeur
----------------------------------------------------------
- Editado William John Adam Trindade quinta-feira, 26 de maio de 2016 15:34
- Marcado como Resposta Thales F Quintas sexta-feira, 27 de maio de 2016 12:15
-