【问题标题】:Teradata SQL: select a literalTeradata SQL:选择文字
【发布时间】:2011-03-06 11:28:53
【问题描述】:

我想使用任意数字的列表作为选择的一种输入。当然,选项 A 是创建一个仅包含值(例如 1、2、3)的临时表。

我希望你们知道什么是 Option >A。

假设语句是这样的:

select Fx,
XXXXXX as Foo
from MyTable
where MyTest depends on each XXXXXX

因此,如果我可以神奇地将 XXXXXX 设为值列表 (1,2,3),我将得到如下结果集:

    My val | Foo
    -------+---
       cat | 1
     mouse | 2
cheesecake | 3

同样,我可以从表中获取输入,但如果没有必要,我不希望这样做。大师们,请插话。

TIA。

【问题讨论】:

  • 我不确定真正要问的是什么。你能澄清一点吗?你对加入数字表不感兴趣,对吗?您是否要在 x 和 y 之间选择值?或者您是否希望创建一个列表并仅拉回匹配 (IN) 的值?为密集而道歉。

标签: sql literals teradata


【解决方案1】:

您可能会发现使用 ROW_NUMBER() 窗口聚合函数会成功。

随机顺序

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY 1)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

或按列排序

SELECT CALENDAR_DATE
     , ROW_NUMBER()
       OVER (ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE 
;

或按另一列分区以重新启动序列

SELECT CALENDAR_DATE
     , YEAR_OF_CALENDAR
     , ROW_NUMBER()
       OVER (PARTITION BY YEAR_OF_CALENDAR
             ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2009-11-01' AND DATE 
;

;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-20
    • 1970-01-01
    • 2018-05-11
    • 2021-11-30
    • 2014-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多