7

1 列 1 行のテーブルは、次のように作成できます。

select 'create' as col from dual;

これは、テーブルの結合を構築するために使用できます。

with
  a as (select 'create' as ac from dual),
  b as (select 'delete' as bc from dual)
select * from a left outer join b on (ac = bc);

今、私は2行にしたいと思います。私はこのようにしました:

select 'create' as col from dual
union
select 'delete' as col from dual;

しかし、これについてもっとコンパクトな表記法はありますか? 私は試した

select ('create', 'delete') as col from dual;

しかし、それは機能しません。

4

2 に答える 2

13

たとえば、コレクション型と TABLE 演算子を使用できます (Oracle 10g で動作します)。

SQL> SELECT column_value FROM TABLE(SYS.ODCIVARCHAR2LIST('abc', 'def', 'ghi'));

COLUMN_VALUE
--------------------------------------------------------------------------------
abc
def
ghi
于 2012-07-13T12:37:31.380 に答える
2

行を生成するいくつかの方法。行数が多いテーブルに対して rownum を使用できます。

SELECT roWnum AS a
  FROM user_objects
  WHERE rownum <= 3

階層クエリを使用できます。

SELECT level AS a
  FROM dual
  CONNECT BY LEVEL <= 3

編集: int シーケンスを alpha シーケンスに変更:

SELECT CHR( ASCII('a') + level - 1 )
  FROM dual
  CONNECT BY LEVEL <= 3
于 2012-07-13T11:40:08.437 に答える