Pular para conteúdo

2025

Atualização condicional

Estratégia 1

data BASE_PAINEL_MPE_PONTO_BB_IND2;
    set BASE_PAINEL_MPE_PONTO_BB_IND;
    if periodo = 202412 and nome_acesso = 'Painel PJ' then do;
        quantidade = quantidade + 1;
        output;
    end;
    else output;
run;



proc sql;
    insert into BASE_PAINEL_MPE_PONTO_BB_IND2 (periodo, nome_acesso, quantidade)
    select periodo, nome_acesso, quantidade
    from PAINELPJ_ACESSOS
    where not exists (
        select 1
        from BASE_PAINEL_MPE_PONTO_BB_IND
        where periodo = 202412 and nome_acesso = 'Painel PJ'
    );
quit;

Estratégia 2

proc sql;
    update BASE_PAINEL_MPE_PONTO_BB_IND2
    set quantidade = (select quantidade from PAINELPJ_ACESSOS)
    where periodo = 202412 
    and nome_acesso = (select nome_acesso from PAINELPJ_ACESSOS);

    /* Verifica se a atualização afetou alguma linha */
    %let rc = &sqlobs;

    /* Se nenhuma linha foi atualizada, insere uma nova linha */
    %if &rc = 0 %then %do;
        insert into BASE_PAINEL_MPE_PONTO_BB_IND2 (periodo, nome_acesso, quantidade)
        values (202412, 'Painel PJ', 123);
    %end;
quit;

Estratégia 3

/* Primeiro, verifique se o registro existe */
proc sql noprint;
    select count(*) into :record_exists
    from BASE_PAINEL_MPE_PONTO_BB_IND2
    where periodo = (select periodo from PAINELPJ_ACESSOS) 
    and nome_acesso = (select nome_acesso from PAINELPJ_ACESSOS);
quit;
%put &=record_exists;



/* Se o registro existir, atualize-o */
%if &record_exists > 0 %then %do;
    proc sql;
/*        update BASE_PAINEL_MPE_PONTO_BB_IND*/
/*        set quantidade = 100*/
/*        where periodo = 202412 and nome_acesso = 'Painel PJ';*/
    quit;
%end;
/* Caso contrário, insira um novo registro */
%else %do;
    proc sql;
        insert into BASE_PAINEL_MPE_PONTO_BB_IND2 (periodo, nome_acesso, quantidade)
        select periodo, nome_acesso, quantidade
        from PAINELPJ_ACESSOS
/*      where not exists (*/
/*          select 1*/
/*          from BASE_PAINEL_MPE_PONTO_BB_IND2*/
/*          where periodo = (select periodo from PAINELPJ_ACESSOS)  */
/*          and nome_acesso = select nome_acesso from PAINELPJ_ACESSOS*/
/*      )*/
        ;
    quit;
%end;

Geral (sempre olhar)

Ferramentas

Dataviz

Esses são de livros

Python

SAS