只求概念 因为SAS SQL语法会稍微的不一样
[问题叙述]:
格式大概长这样 想从数据库里面抓的学号格式改成常见的格式
学号 切成 不需要 A1 B1 C1
00280061 -> 00 28 00 61
A1与B1转换成学号的格式是这样
00~09 -> 0~9 A~Z -> 10~36
C1则是完全取用
A1_TRANS B1_TRANC C1
所以这样转换后 28->S 00->0 61->61 合并起来之后
会变成S061
目前我是做了另外一张转换表字段分别是
A1 A1_TRANS
00 0
01 1
. .
. .
. .
28 S
. .
. .
36 Z
想请问有没有办法用转换表去把A1 B1转换后 创出新的表格
目前是把切开的学号表跟转换表INNER JOIN 然后用WHERE抓 但会出现奇怪的东西
[程式范例]:
虽然张贴程式很可怕,但基本上有些程式还是要张贴才能解决
PROC SQL;
CREATE TABLE WORK.TEST1 AS
SELECT '学号'n,
Substr('学号'n, 3,2) as 'A1'n,
Substr('学号'n, 5,2) as 'B1'n,
Substr('学号'n, 7,2) as 'C1'n
FROM LASRLIB.'学号_TEST'n
;
QUIT;
/*inner join之后在 把需要的转换取出来*/
proc sql;
CREATE TABLE WORK.TEST2 AS
select '学号'n,
catx('','A1_TRANS'n,'B1_TRANS'n,'C1'n) as '转换过的学号'n
from 转换表,TEST1
where TEST1.A1=转换表.A1 and TEST1.B1=转换表.A1
;
quit;