Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Pessoal boa tarde,
Preciso fazer uma condicional utilizando como base dois campos e armazenar o resultado em um outro campo, porém, um dos meus campos está em uma tabela posterior que foi carregada através de uma consulta SQL à um banco Oracle.
Não consigo fazer um load resident em outra tabela para fazer isso pois perco os joins da modelagem.
Conseguem me ajudar? Segue um trecho do script para exemplo:
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
left join
po:
LOAD PO,
PO_LINE,
PO_TYPE as [Tipo PO],
PO&'-'&PO_LINE&'-1' as Document,
//aqui começa a condicional que preciso fazer, mas também utilizando o campo "Categ. Confirmação" da tabela de baixo
if(PO_TYPE = 'ZRDA' or PO_TYPE = 'ZINA' or PO_TYPE = 'ZNNC' or PO_TYPE = 'ZRDC' or PO_TYPE = 'ZINC' or PO_TYPE = 'ZNNN' or PO_TYPE = 'ZNNA' or PO_TYPE = 'ZBNC' or PO_TYPE = 'ZRAR' or PO_TYPE = 'ZNAR' or PO_TYPE = 'ZBNA' or PO_TYPE = 'ZRDN' or PO_TYPE = 'ZNHA' or PO_TYPE = 'ZINN' , 'Compras',
if(PO_TYPE = 'ZNMA' or PO_TYPE = 'ZIMA' or PO_TYPE = 'ZRIN','Reparo')) as [Classificação PO]
FROM
(qvd);
//where NOT Match(PO_TYPE,'ZNGS');
ODBC CONNECT32 TO [TS11;DBQ=TS11] (XUserId is OKJWTRNNGbXKXZVMSDAA, XPassword is DRfRVRNNGLLB);
left join
SQL SELECT
"CONFIRM_CATEG" "Categ. Confirmação",
"PURCHASE_ORDER",
"LINE_ITEM",
//concatenação de PO, linha e traço um para casar com Document
"PURCHASE_ORDER" || '-' || "LINE_ITEM" || '-1' "Document"
FROM "CKF_USER"."CKF_SPR_ZSURMM030";
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Dentro da condicional que está na tabela PO, eu queria adicionar a seguinte situação: if ([Categ. Confirmação] = 'CH' , 'Problema Site') as [Classificação PO], porém ele dá erro por não reconhecer o campo, como segue:
Agradeço desde já!
Att,
Paulo.
E novamente obrigado pela sugestão, já estou utilizando o match, dessa maneira:
if(match(PO_TYPE,'ZRDA','ZINA','ZNNC','ZRDC','ZINC','ZNNN','ZNNA','ZBNC','ZRAR','ZNAR','ZBNA','ZRDN','ZNHA','ZINN'),'Compras',
if(match(PO_TYPE,'ZNMA','ZIMA','ZRIN'),'Reparo',
if(match([Categ. Confirmação],'CH'),'Problema Site' ))) as [Classificação PO]
Uma dúvida: por se tratar de um script de leitura sequencial, não há problemas fazer essa condicional "antes" da carga do campo?
faltou o AS
"CONFIRM_CATEG" "Categ. Confirmação",
"CONFIRM_CATEG" AS "Categ. Confirmação",
ou a virgula se é outro campo
Paulo,
uma dica
ao invés de usar os ifs, poderias usar o match como uma opção
if(match(PO_TYPE,'ZRDA','ZINA','ZNNC','ZRDC','ZINC','ZNNN','ZNNA','ZBNC','ZRAR','ZNAR','ZBNA','ZRDN','ZNHA','ZINN'),'Compras',
if(match(PO_TYPE,'ZNMA','ZIMA','ZRIN'),'Reparo')) as [Classificação PO]
ou um mapa
Além das dicas acima, você pode optar pelo Lookup(). Evidentemente esta função é menos performática do que o Mapping sugerido pelo cleveranjos.
Alessandro, obrigado pela resposta e pela sugestão!
A respeito de faltar um AS, na minha concepção não seria necessário pois é uma consulta SQL, e a nomenclatura poderia ser feita dessa maneira, o campo está sendo nomeando "Categ. Confirmação" normalmente.
Porém para desencargo de consciência coloquei o AS, nada mudou.
Ele continua não encontrando o campo.
E novamente obrigado pela sugestão, já estou utilizando o match, dessa maneira:
if(match(PO_TYPE,'ZRDA','ZINA','ZNNC','ZRDC','ZINC','ZNNN','ZNNA','ZBNC','ZRAR','ZNAR','ZBNA','ZRDN','ZNHA','ZINN'),'Compras',
if(match(PO_TYPE,'ZNMA','ZIMA','ZRIN'),'Reparo',
if(match([Categ. Confirmação],'CH'),'Problema Site' ))) as [Classificação PO]
Uma dúvida: por se tratar de um script de leitura sequencial, não há problemas fazer essa condicional "antes" da carga do campo?
Clever, ainda não consegui fazer dar certo, pode me ajudar?
Acabei utilizando o match Thiago, obrigado pela resposta!
Porém ainda não consegui resolver o problema de achar o campo.