Array
(
)

Erro convert

Dbajr
   - 23 out 2013

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

Joel Rodrigues
   - 23 out 2013

Rapaz, em algum dos registros tem o texto "Total". Você precisa identificar onde é para poder removê-lo.

0
|
0

Dbajr
   - 23 out 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?

0
|
0

Dbajr
   - 23 out 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

0
|
0

Joel Rodrigues
   - 23 out 2013

Ah, entendi o que estava ocorrendo. =)
Que bom que deu certo e obrigado por compartilhar a solução.

Tópico concluído.

0
|
0