作者MOONY135 (谈无慾)
看板Database
标题[SQL] 栏位内转换格式
时间Wed Aug 27 20:01:15 2014
只求概念 因为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;
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.254.125.244
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Statistics/M.1409138261.A.14C.html
※ 编辑: MOONY135 (111.254.125.244), 08/27/2014 20:01:57
1F:推 GoalBased: 奇怪的东西就是出在join那边吧..是甚麽呢.. 08/27 20:51
2F:→ MOONY135: 要明天才可以贴图请问我想法有错误吗 08/27 21:41
3F:推 GoalBased: 楼下那个做法可以直接来拿来用了= = 08/27 22:41