【发布时间】:2011-12-31 14:56:28
【问题描述】:
我试图将 oracle 的按级别连接功能转换为 teradata。我在网上看过很多例子,但这个特别的不一样,
(SELECT
CASE LEVEL
WHEN 1 THEN 'MB'
WHEN 2 THEN 'SB'
ELSE 'TOTAL'
END AS DRUG_SOURCE
FROM
DUAL
CONNECT BY LEVEL <= 3) RW
如果你们有任何想法,请告诉我。
【问题讨论】:
-
您可以使用递归 SQL 在 Teradata 中生成层次结构。例如,您可以从缩进列表中的数据字典构建用户或数据库层次结构。您的查询是否还有其他已知关系,例如一个或多个表?
-
是的,这只是整个查询的一小部分
-
你能再分享一下吗?否则,我只能为您提供一些递归 SQL 的示例,它可能会或可能不会完成您想要的。
-
感谢您的关注。此查询的输出与另一个子查询进行内连接,这两个查询位于主查询的 from 块下。例如:Select..from(递归查询)内连接(查询 2)。我不明白如何处理上述查询的递归部分。我知道我们在 TD 中有“recursive with”,但正如我在查询中遇到的情况一样,我没有得到正确形式的“recursive with”语法,因为这里使用了双表名,所以无法使用在 TD 中。
-
看看这个递归示例 (stackoverflow.com/questions/7807130/…) 虽然这里并不完全需要它,但它向您展示了如何在查询的外部引用 CTE。恐怕你的伪代码/描述不足以让我提出建议的解决方案。
标签: sql oracle case teradata connect-by