0

我想使用任意数字列表作为选择的一种输入。当然,选项 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。

4

1 回答 1

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 
;

;

于 2010-06-24T13:43:38.430 回答