[SQL ] 欄位內轉換格式 (求概念)

作者: MOONY135 (談無慾)   2014-08-27 20:01:15
只求概念 因為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;
作者: GoalBased (Artificail Intelligence)   2014-08-27 20:51:00
奇怪的東西就是出在join那邊吧..是甚麼呢..
作者: MOONY135 (談無慾)   2014-08-27 21:41:00
要明天才可以貼圖請問我想法有錯誤嗎
作者: GoalBased (Artificail Intelligence)   2014-08-27 22:41:00
樓下那個做法可以直接來拿來用了= =

Links booklink

Contact Us: admin [ a t ] ucptt.com