Como já disse algumas vezes aqui, o SQL é uma linguagem própria para trabalhar com bases de dados. Logo, é de se esperar que alguns softwares utilizem funções semelhantes, ou até iguais, a ela. Isso porque (i) muitas pessoas que utilizam base de dados já estão acostumadas com o SQL, e (ii) é muito mais fácil se basear nessas funções já existentes do que ficar tentando criar algo novo mirabolante. O SAS, assim como outros softwares estatísticos, incluiu o SQL no seu ambiente. Para utilizá-lo, o usuário precisa somente iniciar a sintaxe com PROC SQL e finalizar com QUIT (ou RUN). Aqui, veremos vários exemplos de como o PROC SQL pode fazer muito pelo usuário.
Comecemos montando uma tabela exemplo. Façamos de conta que você tem uma tabela com as informações das compras feitas pelos clientes de diversas lojas que sua empresa possui pelo Brasil. Na tabela, você encontrará a coluna ID contendo a chave de identificação do indivíduo, UF contendo a unidade federativa do indivíduo e VLR_COMPRA contendo o valor da compra feita pelo indivíduo.
DATA EXEMPLO; INPUT ID $ UF $ VLR_COMPRA; CARDS; AA123 SP 1000 BB001 MG 1500 AA010 BA 1650 AA003 BA 1900 . SP 1520 . PE 1575 . . 1000 AA111 PE 500 ; RUN;

Note que temos alguns valores missing. Isso é proposital e você saberá como lidar com eles ao fim desse tutorial.
PROC SQL; SELECT COLUMN(S) FROM TABLE(S) | VIEW(S) WHERE EXPRESSION GROUP BY COLUMN(S) ORDER BY COLUMN(S); QUIT;
Começando pelo mais simples, o SELECT serve para selecionar as colunas que você deseja trazer da tabela referenciada. No exemplo abaixo, vamos trazer as informações de ID e UF da tabela EXEMPLO:
PROC SQL; SELECT ID, UF FROM EXEMPLO ; QUIT;

PROC SQL; SELECT * FROM EXEMPLO ; QUIT;

Nos exemplos acima, você está selecionando as informações, mas elas não estão sendo salvas em uma nova tabela que poderá ser utilizada no futuro. Caso você queira criar uma nova tabela com essas informações, use o CREATE TABLE + NOME DA TABELA CRIADA + AS. No exemplo abaixo, estamos criando uma nova tabela chamada EXEMPLO_2 contendo as informações de ID e UF dos clientes da tabela EXEMPLO:
PROC SQL; CREATE TABLE EXEMPLO_2 AS SELECT ID, UF FROM EXEMPLO; QUIT;

Agora a tabela está salva em sua WORK e pode ser usada em outros passos do seu programa. Aqui, continuaremos trabalhando com a tabela EXEMPLO.
PROC SQL; SELECT ID , UF FROM EXEMPLO WHERE UF = "SP"; QUIT;

Se você trabalhar com variáveis numéricas, você pode utilizar, além do igual, os símbolos de maior (>), menor (<), maior ou igual (>=) ou menor ou igual (<=).
Você pode filtrar utilizando como critério uma variável não selecionada:
PROC SQL; SELECT ID, UF FROM EXEMPLO WHERE VLR_COMPRA > 1500; QUIT;

É comum nós utilizarmos informações geradas por outras áreas. Ou fornecermos insumos para outras pessoas. Sendo assim, nem sempre o nome da variável é suficiente. Até porque é uma boa prática utilizar abreviações nos nomes. Uma opção para facilitar a identificação é utilizar o LABEL, criando assim um rótulo para a variável. Sempre que você passar o mouse por cima da coluna, ou quando gerar as informações da tabela com o PROC CONTENTS, irá aparecer explicação sobre a variável:
PROC SQL; CREATE TABLE EXEMPLO_LABEL AS SELECT ID LABEL = "CHAVE DE IDENTIFICACAO" , UF LABEL = "UNIDADE FEDERATIVA" FROM EXEMPLO WHERE UF = "SP"; QUIT; PROC CONTENTS DATA = EXEMPLO_LABEL; RUN;
AS
PROC SQL; SELECT ID , UF , VLR_COMPRA AS VALOR FROM EXEMPLO QUIT;

PROC SQL; CREATE TABLE EXEMPLO_NOVA_VARIAVEL AS SELECT ID , UF , 0.9*VLR_COMPRA AS VALOR_C_DESC LABEL = "VALOR DA COMPRA COM 10% DE DESCONTO" FROM EXEMPLO WHERE UF = "SP"; QUIT;

Para criar campos totalizadores (agrupados) você pode usar funções como SUM na hora de selecionar as variáveis. No exemplo abaixo, contamos o número de ids, a soma dos valores de compra e o maior valor de compra agrupando por UF:
PROC SQL; SELECT UF , SUM(VLR_COMPRA) AS VALOR_TOTAL , MAX(VLR_COMPRA) AS VALOR_MAX , COUNT(ID) AS QTD_ID FROM EXEMPLO GROUP BY UF; QUIT;
SELECT DROP
PROC SQL; CREATE TABLE EXEMPLO_3 (DROP = UF) As SELECT * FROM EXEMPLO; Quit;

PROC SQL; SELECT * FROM EXEMPLO WHERE ID IS NOT NULL; Quit;

PROC SQL; SELECT * FROM EXEMPLO WHERE ID IS NULL; Quit;
Combinando três tabelas com o left joinComo combinar tabelas no SAS utilizando left join e full joinConversão texto para número no data step e proc sql
Prezados,
Preciso de uma ajuda, tenho uma tabela com as variáveis UF e preciso selecionar somente as UFs MG e SP através do proc SQL, como faço, pois não estou conseguindo.