我想使用任意数字列表作为select的一种输入。当然,选项A是创建一个仅包含值的临时表(例如,1,2,3)。
我希望你们知道选项> 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。
答案 0 :(得分: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
;
OR按列排序
SELECT CALENDAR_DATE
, ROW_NUMBER()
OVER (ORDER BY CALENDAR_DATE)
FROM SYS_CALENDAR.CALENDAR
WHERE CALENDAR_DATE BETWEEN DATE '2010-06-01' AND DATE
;
OR由另一列分区以重新启动序列
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
;