4

我需要加入从我的程序中动态检索的动态数字列表。行数不是固定的,使用的数字也不是固定的。

我没有找到比以下更好的方法来完成此操作(出于我的目的,临时表没有帮助):

select 111 as col1, 322 as col2 from dual
union all
select 3 as col1, 14 as col2 from dual
union all
select 56 as col1, 676 as col2 from dual;

有一个更好的方法吗?我看到有一个 connect by 语句可以返回多行,但我没有看到一种方法来执行多行和多列。

4

2 回答 2

6

您可以使用解码并按级别连接:

select decode(rownum, 1, 111, 2, 3, 3, 56) as col1,
       decode(rownum, 1, 322, 2, 14, 3, 676) as col2
  from dual
connect by level <= 3;
于 2016-05-02T06:55:19.040 回答
3

你可以在CONNECT BY这里使用一些数学:

SELECT Level * 2 - 1 AS col1, Level * 2 AS col2
FROM DUAL
CONNECT BY LEVEL <= 3;

这将为您提供三行的示例。调整LEVEL <= ...值以获得更多行。

于 2015-01-28T21:41:27.703 回答