Fórum Select com Case e Coalesce não está funcionando #393278
03/01/2011
0
select case id_tecnico when null then coalesce(max(id_tecnico),0+1) end chave from staff_tecnico group by id_tecnico
select coalesce(max(id_tecnico),0+1)chave from staff_tecnico
Pjava
Curtir tópico
+ 0Posts
04/01/2011
Emerson Nascimento
talvez o que você queira seja isso:
select coalesce(max(id_tecnico),0)+1 chave from staff_tecnico
Gostei + 0
04/01/2011
Pjava
Gostei + 0
05/01/2011
Emerson Nascimento
case???? que case ???
não tem case na instrução que eu te passei.
select coalesce(max(id_tecnico),0)+1 chave from staff_tecnico
Gostei + 0
05/01/2011
Pjava
Gostei + 0
05/01/2011
Deivison Melo
Gostei + 0
05/01/2011
Deivison Melo
decode(id_tecnico, null,(select max(id_tecnico) + 1 from staff_tecnic), id_tecnico) id_tecnico
from staff_tecnic
Gostei + 0
05/01/2011
Emerson Nascimento
Paulo, você executou a instrução que eu te passei?
Ela faz exatamente o que você está precisando. copie daqui e cole no IBExpert, por exemplo.
select coalesce(max(id_tecnico),0)+1 chave from staff_tecnico
note que a minha instrução é diferente da sua. são muito parecidas e você pode pensar que é a mesma, mas não é.
Gostei + 0
05/01/2011
Pjava
select max(id_tecnico) + 1 from staff_tecnico
Por isso eu preciso de um Case ou IF, para testar se aquela tabela, daquele cliente, esse campo é NULL ou não. Ele será NULL quando o cliente for novo. Aí a pessoa ao cadastrar pela primeira vez, a minha função feita em Delphi, vai fazer uma verificação(Com CASE), gerar a chave e inserir no banco com o novo valor. Essa é a razão do CASE, ou seja, ou uso um select ou uso outro.
Gostei + 0
06/01/2011
Emerson Nascimento
Você tem uma tabela de onde você precisa obter o maior ID e gerar um novo acrescentando 1 ao ID encontrado.
O problema é que esse tabela pode estar vazia e o valor retornado pela MAX() seria um NULL.
É isso?
Se for isso, a instrução que eu te passei faz exatamente o que você quer.
Então preciso te fazer uma pergunta: VOCÊ TESTOU A INSTRUÇÃO QUE EU TE PASSEI? OU APENAS ACHA QUE ELA NÃO FUNCIONA ?
select coalesce(max(id_tecnico),0)+1 chave from staff_tecnico
Explicando cada trecho da instrução
select coalesce(max(id_tecnico),0)+1 chave from staff_tecnico
o trecho em vermelho traz o maior ID da tabela staff_tecnico
o trecho em azul indica que se o valor obtido pela função MAX() for um NULL, ele assumirá o valor zero.
o trecho em verde indica que deverá ser somado 1 ao valor obtido.
acho que é exatamente disso que você precisa.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)