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;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.