需要你的帮助来解决我正在努力解决的特定问题
我有一张teradata表,如下所示。
Queryid Databasename Tablename
101 DB1 TB1
101 DB2 TB2
101 DB1 TB3
102 DB3 TB3
102 DB4 TB4
. . .
. . .
. . .
我需要以下格式的输出。
Queryid Newcol
101 DB1.TB1,DB2.TB2,DB1.TB3
102 DB3.TB3,DB4.TB4
. .......
. .......
我使用的是TD13.10并且没有XML服务,而且TDStats功能也不可用。
任何帮助都是巨大的......
由于
答案 0 :(得分:0)
您可以使用递归。虽然你必须使用另一个表来存储和使用递归使用该表来通过rownumber连接值。
CREATE VOLATILE TABLE temp_tbl AS (
SELECT
queryid
,databasename ||'.'||tablename
,ROW_NUMBER() OVER (PARTITION BY queryid ORDER BY queryid) AS rnk
FROM temp
) WITH DATA PRIMARY INDEX(parent_id) ON COMMIT PRESERVE ROWS
WITH RECURSIVE test1(query,databasename,tablename,LVL)
AS
(
SELECT queryid,databasename,tablename, 1
FROM <tablename>
WHERE rnk = 1
UNION ALL
SELECT queryid, TRIM(databasename) || ', ' || TRIM(tablename),LVL+1
FROM temp_tbl INNER JOIN test1
ON queryid = query
AND temp_tbl.rn = test1.lvl+1
)
SELECT query,databasename,tablename,LVL
FROM test1
QUALIFY RANK() OVER(PARTITION BY query ORDER BY LVL DESC) = 1;