Erro convert
Gente, eu aqui de novo, ta complicado a coisa ...
Tenho esse código, que preciso fazer o calculo de alguns itens que tem no estoque, faço uma substituição de Terreo para 0 na coluna andar, pra que seja feito uma ordenação por andar, ai quando peço pra calcular tudo que seria o ultimo select, aparece a seguinte msg de erro.
Mensagem 245, Nível 16, Estado 1, Linha 1
Falha ao converter o varchar valor 'Total' para o tipo de dados int.
select
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) AS id_Linha,
convert(int, replace(replace(ANDAR, 'Terreo', ' '), ' ', 0)) Andar,
COUNT(*) as 'Quantidade'
from tabela
where ID_CATEGORIA = 2 --
and ID_STATUS = 1
group by ANDAR
union
select
@@ROWCOUNT,
'Total',
count(*) 'Quantidade'
from tabela
where ID_CATEGORIA = 2
and ID_STATUS = 1
group by ANDAR
Tenho esse código, que preciso fazer o calculo de alguns itens que tem no estoque, faço uma substituição de Terreo para 0 na coluna andar, pra que seja feito uma ordenação por andar, ai quando peço pra calcular tudo que seria o ultimo select, aparece a seguinte msg de erro.
Mensagem 245, Nível 16, Estado 1, Linha 1
Falha ao converter o varchar valor 'Total' para o tipo de dados int.
select
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) AS id_Linha,
convert(int, replace(replace(ANDAR, 'Terreo', ' '), ' ', 0)) Andar,
COUNT(*) as 'Quantidade'
from tabela
where ID_CATEGORIA = 2 --
and ID_STATUS = 1
group by ANDAR
union
select
@@ROWCOUNT,
'Total',
count(*) 'Quantidade'
from tabela
where ID_CATEGORIA = 2
and ID_STATUS = 1
group by ANDAR
Simone
Curtidas 0
Respostas
Joel Rodrigues
23/10/2013
Rapaz, em algum dos registros tem o texto "Total". Você precisa identificar onde é para poder removê-lo.
GOSTEI 0
Simone
23/10/2013
Voce esta certo, já fiz a alteração dele pra numero, deu certo, mas ai é que ta não posso removê lo, ele tem que aparecer ..
tem que ficar assim
Total 70
Não teria outra solução?
tem que ficar assim
Total 70
Não teria outra solução?
GOSTEI 0
Simone
23/10/2013
Consegui =)
with dispositivos_andar
as
(
select
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) AS id_Linha,
replace(ANDAR, 'º', '') as 'Andar',
COUNT(*) as 'Quantidade'
from tabela
where ID_CATEGORIA = 2
and ID_STATUS = 1
group by ANDAR
)
select
disp1.id_Linha,
disp1.Andar,
disp1.Quantidade
from dispositivos_andar as disp1
union all
select
@@ROWCOUNT,
'Total Geral',
sum (disp2.Quantidade) as Quantidade
from dispositivos_andar as disp2
with dispositivos_andar
as
(
select
ROW_NUMBER() OVER(ORDER BY convert(int, replace(replace(replace(ANDAR, 'Terreo', ' '),' ',0),'º',' '))) AS id_Linha,
replace(ANDAR, 'º', '') as 'Andar',
COUNT(*) as 'Quantidade'
from tabela
where ID_CATEGORIA = 2
and ID_STATUS = 1
group by ANDAR
)
select
disp1.id_Linha,
disp1.Andar,
disp1.Quantidade
from dispositivos_andar as disp1
union all
select
@@ROWCOUNT,
'Total Geral',
sum (disp2.Quantidade) as Quantidade
from dispositivos_andar as disp2
GOSTEI 0
Joel Rodrigues
23/10/2013
Ah, entendi o que estava ocorrendo. =)
Que bom que deu certo e obrigado por compartilhar a solução.
Tópico concluído.
Que bom que deu certo e obrigado por compartilhar a solução.
Tópico concluído.
GOSTEI 0