【问题标题】:Select from dual connect by level on Vertica db在 Vertica db 上按级别从双连接中选择
【发布时间】:2022-10-12 23:33:18
【问题描述】:

我是 Vertica db 的新手,我正在尝试翻译我以前的工作使用的 SQL Oracle 代码。目前,我正在尝试使用步骤 1 生成一列,其值从 1 到 20。在 Oracle 中,我使用:

select rownum from dual connect by level <22

我已经检查过 Vertica 中是否存在双表,但 cennect by 语句不起作用。如何在 Vertica 中编写 IT?

【问题讨论】:

标签: sql oracle vertica


【解决方案1】:

真正的资源浪费是这样的:

ALTER SESSION SET PARAMETER WithClauseRecursionLimit=20;
WITH RECURSIVE seq AS (
  SELECT 1 AS i
  UNION ALL
  SELECT I + 1 FROM seq
)
SELECT * FROM seq;

但更有效的方法是我们在 Vertica 非常喜欢的 TIMESERIES 子句的副作用:

WITH limits(ts) AS (
  SELECT DATE '2000-01-01'::timestamp + 1 
  UNION ALL 
  SELECT DATE '2000-01-01'::timestamp + 21
)
SELECT
  tm::DATE - DATE '2000-01-01' AS i
FROM limits
TIMESERIES tm AS '1 day' OVER(ORDER BY ts)

【讨论】:

    猜你喜欢
    • 2013-05-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-15
    • 2022-06-15
    • 1970-01-01
    相关资源
    最近更新 更多