Teradata实现字符串拼接
(2013-04-18 10:57:31)分类: 技术 |
这里说的“字符串拼接”指:把key值相同的val拼接起来。
例,
源表(src_tble)如下:
k_y
------------------
k1
k1
k2
k2
k2
拼接后(dst_tbl):
k_y
------------------
k1
k2
用teratada sql的实现方式分如下两步。
步骤一(将源表用分析函数结构化):
CREATE MULTISET VOLATILE TABLE VT1
AS(
FROM src_tble a) WITH
DATA PRIMARY INDEX(k_y) ON COMMIT
PRESERVE ROWS;
此时VT1的表结构和数据是这样的:
k
------------------
k1
k1
k2
k2
k2
其中红色的(id = 1的)被认为是父节点,用以找到其下所有的子节点,使用情况参考步骤二。
步骤二:
INSERT
INTO
(
)
WITH RECURSIVE
rec
(
)
AS
(
SELECT
FROM VT1
WHERE id = 1
UNION ALL
SELECT
FROM rec t1,VT1 t2
WHERE
AND T1.ID=T2.ID-1
)SELECT k,v FROM
rec
QUALIFY ROW_NUMBER() OVER
(PARTITION BY rec.k ORDER BY rec.v DESC)=1
;
注:以上sql乃未经测试的代码(可以认为是伪代码),仅仅给出思路,使用者可自如修改删取。