Fórum Ordenar por campo calculado transformado #333935
30/11/2006
0
Estou precisando fazer um reltório onde sendo ordenado por um campo calculado. Até aí tudo bem, sei que é só colocar ele na query, e isso eu já fiz só que o problema é que o campo recebe uma sequencia numerica do tipo
11010100035
11010200040
como eu junto pedaços de outros campos pra formar esse numero eu precisaria de uma forma em que eles ficassem como se fosse um campo string, o campo que criei calculado é string, mas não sei mcomo colocar os dados nele dentro da query e que os coloque na sequencia.
Na minha query fiz
(campo1 + campo2 + campo3 + campo4) resultado
os campos são numericos e o resultado é string, como eu faria para que os campos colocassem os valores em sequencia e nao a soma deles dentro do resultado.
Agradeço antecipadamente qualquer ajuda.
Salupe
Curtir tópico
+ 0Posts
30/11/2006
Arc
no sql server poderia fazer o seguinte
select
convert(varchar,campo1)+
convert(varchar,campo2)+
convert(varchar,campo3)+
convert(varchar,campo4) as resultado
from tabela
order by 1
Gostei + 0
30/11/2006
Salupe
Tentei como vc falou mas não funcionou, primeiro ele não aceitou o varchar troquei por string e passou, só que depois não aceitou o convert, só estranhei que deveria ter não aceitado a palavra convert antes do varchar.
Tem alguma outra função para trocar o convert.
Agradeço antecipadamente qualquer ajuda.
Gostei + 0
30/11/2006
Arc
no sql server tbem tem a funcao CAST que tem a seguinte sintaxe:
CAST ( expression AS data_type )
sintaxe do convert:
CONVERT ( data_type [ ( length ) ] , expression [ , style ] )
Achei isso no forum do Firebase
A função CAST faz a conversão do tipo do dado.
Por exemplo, se você deseja concatenar um campo numérico com um
campo alfanumérico você precisa antes converter o número para string, como
no exemplo abaixo:
select Cast(CampoNumerico As VarChar(Tamanho)) || CampoAlfaNumerico
from Tabela
Gostei + 0
30/11/2006
Salupe
A Função cast fez a conversao que eu precisava, só que ficou um probleminha.
Tem alguma função pra fazer aparecer zeros nos espaços em branco,
tipo assim
o numero recebido seria
1
1
1
1
0
e ele ficaria assim
1
1
01
01
00000
no cast eu indiquei o tamanho da variável que iria ficar, mas ele aparece somente o que existe.
Agradeço antecipadamente qualquer ajuda.
E obrigado Arc pela ajuda dada.
Gostei + 0
30/11/2006
Arc
Essas informações da sua tabela, tem algum padrão de tamanho nas colunas de valor ??? todas as colunas tem o mesmo numero de caracteres ???
Não sei se existe alguma função, mas assim de imediato, eu faria um ´case´ verificando o tamanho dessas colunas convertidas e concatenando com zeros.
Gostei + 0
30/11/2006
Salupe
o primeiro e o segundo campos não passam de 9.
o terceiro e quarto não passam de 99
e o quinto pode ir até 99999
só que com o detalhe de ter que aparecer os zeros no lugar onde o numero for menor que o tamanho que ele pode chegar.
Sei que estou pedindo demais mas, poderia me dar um exemplo de case.
Nunca usei e não sei como faze-lo no sql.
Agradeço antecipadamente qualquer ajuda.
Gostei + 0
30/11/2006
Arc
select
case len(campo1)
when 1 then ´00´+ convert(varchar,campo1)
when 2 then ´0´+ convert(varchar,campo1)
else convert(varchar,vl1)
end
+
case len(campo1)
when 1 then ´00´+ convert(varchar,campo2)
when 2 then ´0´+ convert(varchar,campo2)
else convert(varchar,campo2)
end
from tabela
order
by 1
Gostei + 0
30/11/2006
Arc
Gostei + 0
30/11/2006
Salupe
no campo 3 que teria que ser no máximo até 99 verfiquei se o valor fosse menor ou igual a 9 o resto foi igual a sua rotina só que em vez de convert usei o cast mesmo.
Obrigado pela ajuda Arc, valeu mesmo.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)