SQL如何在何时将列添加到事例中

  • 本文关键字:添加 何时 SQL sql sas
  • 更新时间 :
  • 英文 :


我有sql代码,在第一部分中,我创建了信用表,其中有kl_nazwa项。现在我想创建另一个表,并为每个项目添加一个国家,但我想将kl_nazwa中的值分配给项目积分。但我的代码不起作用。应该怎么做?

我的代码:

proc sql;
create table COREP as
select 
spr_DATA_SPR           as DATA_DANYCH      format yymmdd10.,
"Kredyty hipoteczne"   as RODZAJ_AKTYWÓW   format $50. length=50,
ID                     as ID               format $50. length=50,
kl_NAZWA               
spr_WAL_OPIS           as WALUTA           format $3.  length=3,
CRD_EKSP_PIER_DC_FIN   as EXP_PIERWOTNA    format commax16.2,
-CRD_KOR_DC_FIN        as KOREKTA          format commax16.2,
CRD_AC_ORIGIN          as CRD_AC_ORIGIN    format $2.  length=2,
CRD_AC                 as CRD_AC           format $2.  length=2,
CRD_CCF                as CRD_CCF          format commax16.2,
CRD_RWG                as CRD_RWG          format commax16.2,
DESC_2                 as CRD_BIL_POZABIL  format $1.
from kredyty;
proc sql;
create table COREP as
select (*)
case 
when (RODZAJ_AKTYWÓW) = 'Instrumenty pochodne' Then 'Polska'
when (RODZAJ_AKTYWÓW) = 'Pozostałe aktywa'    then 'Polska'
when (RODZAJ_AKTYWÓW) = 'Nostra' then 'Polska' 
when (RODZAJ_AKTYWÓW) = 'Papiery wartościowe'    then 'Polska'
when (RODZAJ_AKTYWÓW) = 'Kredyty'    then kl_nazwa
as kraj
from corep
;
quit;

解决方案:

应添加

else
proc sql;
create table COREP as
select *,
case 
when (RODZAJ_AKTYWÓW) = 'Instrumenty pochodne' Then 'Polska'
when (RODZAJ_AKTYWÓW) = 'Pozostałe aktywa'      then 'Polska'
when (RODZAJ_AKTYWÓW) = 'Nostra' then 'Polska' 
when (RODZAJ_AKTYWÓW) = 'Papiery wartościowe'       then 'Polska'
else kl_kraj_opis   
end     as Kraj
from corep
;
quit;

理论上这应该是答案:

  • 使用IN而不是多个=
  • 在后面添加逗号*
  • 在CASE中添加END
proc sql;
create table COREP as
select (*)
case 
when (RODZAJ_AKTYWÓW) in ('Instrumenty pochodne', 
'Pozostałe aktywa',    
'Nostra',
'Papiery wartościowe')    then 'Polska'
when (RODZAJ_AKTYWÓW) = 'Kredyty'    then kl_nazwa
else kl_kraj_opis   
end  as kraj
from corep
;
quit;

除此之外,在您的原始查询中:

"Kredyty hipoteczne"   as RODZAJ_AKTYWÓW   format $50. length=50,

它将COREP中变量的所有值设置为字符常量,这使CASE变得无用,因为它将始终为空。我怀疑那句话不正确。如果变量中有空格,则末尾需要一个n,即

"Kredyty hipoteczne"n   as RODZAJ_AKTYWÓW   format $50. length=50,

最新更新