consulta Oracle SQL, campos concatenar com uma secção CASE
Pergunta
Atualmente estou gerando SQL insert declarações de mais de uma mesa, e nos dados gerados eu preciso usar uma instrução CASE, como este:
select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
||t.f1||','
||CASE
WHEN t.f2 > 0 THEN '1'
ELSE '0'
END CASE
from table2 t , table3 t3
Mas, neste ponto, se eu quero continuar a minha declaração com ... END CASE||','|| ....
Eu não pode executar a consulta mais, como SAPO reclama de não encontrar a palavra chave FROM.
Uma solução rápida foi separar o ouput em campos, em seguida, salve-o em texto, e editar, mas deve haver uma maneira melhor.
Solução
Use END em vez de CASE END
select 'INSERT INTO TABLE1 (f1, f2, f3, f4 ...) values ('
||t.f1||','
||CASE
WHEN t.f2 > 0 THEN '1'
ELSE '0'
END||','||t.f2
from table2 t , table3 t3
Outras dicas
Para algumas situações semelhantes, a função de "decodificar" funciona muito bem.
Você pode ser capaz de alimentar a expressão (t.f2> 0) em um decodificar e então traduzir 'T' em '1' e 'F' em '0'.
Eu não tentei isso.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow