2016-10-04 14 views
1

選択の各列に名前を付けずに、自分のテーブルから最初の20列を選択することはできますか?最初の20列を選択

カラムは、選択を行うと常に同じ順序で並べられます。そのため、基本的な順序が必要です。

+1

.....、選択0,1,2のように列インデックスの代わりに、列名を使用することができ、それは本当にわずか20列に名前を付けることは難しいのですか? – tbone

+0

'all_tab_columns'を動的に構築します。 –

+1

しているのですが、同じテーブルで多くのビューを作成するだけです。 – thatjeffsmith

答えて

-1

sysColumnsというSQL Serverデータベースには、すべてのテーブルのすべての列を記録するテーブルがあります。私はそれがSQL標準だと思うし、Oracleにもあるはずです。

EDIT:@ davegreen100のコメントのおかげで、この表はOracleにありますが、名前はDBA_TAB_COLUMNSです。

Select * from DBA_TAB_COLUMNSを実行して、結果が何であり、そこから作業するかを確認してください。

それは(Oracleの中で)がある場合、あなたは最終的に最終的なSQLは、おそらく以下の上記

+1

in oracleテーブルはDBA_TAB_COLUMNS – davegreen100

1

からの出力を使用して動的に生成する必要があります

Select name from DBA_TAB_COLUMNS 
Where id = @tableId -- <--- the id of the table 
    and colOrder <= 20 

のようなものになってしまいますクエリはあなたのためにSQLを形成します。ディクショナリ表 all_tab_columnsを使用して、表の列名をフェッチします。

SELECT ' SELECT ' 
    || REPLACE(LISTAGG(column_name,',') WITHIN GROUP(ORDER BY column_id),',',',' 
    ||CHR(10)) 
    || ' FROM YOUR_TABLE' 
FROM all_tab_columns 
WHERE owner ='YOUR_SCHEMA_NAME' 
AND table_name='YOUR_TABLE_NAME' 
AND column_id <= 20; 
+0

ありがとう、これは、結果をコピーし、ワークシートに貼り付けて実行する必要がある構文を生成します。上記にいくつかのコードを追加することもできます。つまり、クエリも実行されますか? – amsbam1

+0

どのようにクエリを実行しますか? SQL Developerで? –

+0

はい、SQL開発者です。 – amsbam1

0

あなたは

+0

一度試しましたか? –

+1

はい。しかし、出力列名を与えない問題 –

関連する問題