2015-09-22 27 views
0

轉換我有源表如下列於排在Teradata的

PROGRAM_ID SOURCE_TABLE 
    1   A,B 
    2   C,D,E 
    3   E 
    4   X,Y,Z,H,B 

,我想針對以下格式

PROGRAM_ID SOURCE_TABLE 
    1    A 
    1    B 
    2    C 
    2    D 
    2    E 
    3    E 
    4    X 
    4    Y 
    4    Z 
    4    H 
    4    B 

我下面的查詢 CHARACTER得到逗號的數源查詢與(SOURCE_TABLE) - 字符(oreplace(SOURCE_TABLE,',','')) 但我無法在第一個,第二個逗號等之後獲取記錄。

+0

爲什麼它得到負面評價?任何具體原因? – navku

回答

1

在TD14 +有兩個內置的表函數來分割字符串,STRTOK_SPLIT_TO_TABLEREGEXP_SPLIT_TO_TABLE

with cte as 
(
    select PROGRAM_ID, SOURCE_TABLE 
    from tab 
) 
SELECT * 
FROM TABLE (STRTOK_SPLIT_TO_TABLE(cte.PROGRAM_ID, cte.SOURCE_TABLE, ',') 
    RETURNS (PROGRAM_ID INTEGER, 
       tokennum INTEGER, 
       SOURCE_TABLE VARCHAR(128) CHARACTER SET UNICODE) 
      ) AS d 

需要修改所得到的數據類型相匹配的輸入端(長度和字符集)

+0

謝謝dnoeth你的回答總是很棒! – navku