Bom dia sou iniciante no SAS e estou coma seguinte dificuldade - Transformar o trecho do código sql abaixo para o formato do proc sql no SAS.
No código SQL ficaria assim: where cod_operadora || '|' || num_contrato in ('003 | 123456789', '001 | 987654321')
Detalhe: o campo cod_operadora é um campo texto e o campo num_contrato é um campo numérico.
Como eu poderia converter o trecho do sql para o proc sql do SAS, conseguem me ajudar?
No problem-I'm happy to help. I went ahead and adapted the code based on what you provided. I think this is what you need, but please feel free to let me know if it doesn't capture something you need. The only issue I see with it is that it creates a Cartesian product, which may be problematic if you're working with a large data set or database. / Não há problema. Terei todo o gosto em ajudar. Eu fui em frente e adaptei o código com base no que você forneceu. Acho que é disso que você precisa, mas sinta-se à vontade para me avisar se não houver algo de que você precisa. O único problema que vejo é que ele cria um produto cartesiano, o que pode ser problemático se você estiver trabalhando com um grande conjunto de dados ou banco de dados.
data cadastro;
input cod_operadora :$3. instalacao $10.;
datalines;
003 ABCDEFGHIJ
001 ABCDEFGHII
002 ABCDEFGHHH
006 ABCDEFGGGG
;
run;
data cliente;
infile datalines delimiter = ",";
input num_contrato assinante $ tipo_contrato $;
datalines;
123456789,A,XYZ
987654321,B,ABC
929193921,C,ABC
999239123,D,EFG
;
run;
proc sql;
select
cad.cod_operadora,
cad.instalacao,
cli.num_contrato,
cli.assinante,
cli.tipo_contrato
from
cadastro cad, /* ou cadastro AS cad */
cliente cli /* ou cliente AS cli */
where
catx(" | ", cod_operadora, num_contrato) in ("003 | 123456789", "001 | 987654321");
quit;
@Jose_Roberto wrote:
Bom dia sou iniciante no SAS e estou coma seguinte dificuldade - Transformar o trecho do código sql abaixo para o formato do proc sql no SAS.
No código SQL ficaria assim: where cod_operadora || '|' || num_contrato in ('003 | 123456789', '001 | 987654321')
Detalhe: o campo cod_operadora é um campo texto e o campo num_contrato é um campo numérico.
Como eu poderia converter o trecho do sql para o proc sql do SAS, conseguem me ajudar?
Translated via Google from Portuguese to English--not sure how correct it is, but it translated it well enough for me to understand.
Good morning I am a beginner in SAS and I am having the following difficulty - Transform the sql code snippet below to the format of the sql proc in SAS.
In the SQL code it would look like this: where cod_operadora || '|' || num_contrato in ('003 | 123456789', '001 | 987654321')
Detail: the cod_operadora field is a text field and the num_contract field is a numeric field.
How could I convert the sql snippet to the SAS sql proc, can you help me?
Here's my solution. Try running this code. / Aqui está minha solução. Tente executar este código.
data have;
input cod_operadora :$3. num_contrato;
datalines;
003 123456789
001 987654321
002 929193921
006 999239123
;
run;
proc print data = have;
run;
proc sql;
select
*
from
have
where
catx(" | ", cod_operadora, num_contrato) in ("003 | 123456789", "001 | 987654321");
quit;
The CATX function trims leading and trailing blanks, and inserts the " | " delimiter. / A função CATX apara os espaços em branco à esquerda e à direita e insere o caractere " | " delimitador.
No problem-I'm happy to help. I went ahead and adapted the code based on what you provided. I think this is what you need, but please feel free to let me know if it doesn't capture something you need. The only issue I see with it is that it creates a Cartesian product, which may be problematic if you're working with a large data set or database. / Não há problema. Terei todo o gosto em ajudar. Eu fui em frente e adaptei o código com base no que você forneceu. Acho que é disso que você precisa, mas sinta-se à vontade para me avisar se não houver algo de que você precisa. O único problema que vejo é que ele cria um produto cartesiano, o que pode ser problemático se você estiver trabalhando com um grande conjunto de dados ou banco de dados.
data cadastro;
input cod_operadora :$3. instalacao $10.;
datalines;
003 ABCDEFGHIJ
001 ABCDEFGHII
002 ABCDEFGHHH
006 ABCDEFGGGG
;
run;
data cliente;
infile datalines delimiter = ",";
input num_contrato assinante $ tipo_contrato $;
datalines;
123456789,A,XYZ
987654321,B,ABC
929193921,C,ABC
999239123,D,EFG
;
run;
proc sql;
select
cad.cod_operadora,
cad.instalacao,
cli.num_contrato,
cli.assinante,
cli.tipo_contrato
from
cadastro cad, /* ou cadastro AS cad */
cliente cli /* ou cliente AS cli */
where
catx(" | ", cod_operadora, num_contrato) in ("003 | 123456789", "001 | 987654321");
quit;
SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.