有什么方法可以为硬编码值列表构建CTE?例如,我有一个已知ID的列表(即101,102,105,200 ...),我如何能够用称为ID的一列创建CTE,但所有ID值都在查询中进行了硬编码?顺便说一句,我需要在Oracle中运行此查询。谢谢!
最佳答案
你可以做类似的事情
WITH cte AS (
SELECT 101 id FROM dual UNION ALL
SELECT 102 FROM dual UNION ALL
SELECT 105 FROM dual UNION ALL
SELECT 200 FROM dual UNION ALL
...
)
但是,根据您实际要完成的工作,您可能想要声明一个集合并使用该集合(有或没有解析逗号分隔字符串的函数)
CREATE TYPE num_tbl
AS TABLE OF NUMBER;
WITH cte AS (
SELECT column_value
FROM TABLE( num_tbl( 101, 102, 105, 200 ))
)
关于sql - 在CTE中建立定义值的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22850382/