一時テーブルを作成し、この一時テーブルをredshiftで呼び出したいですか?これを試しましたが、エラーメッセージが表示されます。
select top 10 * into #a from public.item_activity where item_act_timestamp < DATEADD(day,-1,getdate());
select * from #a
「エラー:42P01:リレーション「#a」は存在しません」
以下のコマンドを使用してテーブルテーブルを作成してください。
CREATE TEMP TABLE temp_table_name ....
これが完了したら、以下のようにselectクエリを使用します
select * from temp_table_name
一時テーブルは、テーブルを作成したセッションの間のみ存在します。
この問題は私にもしばらく悩まされていたので、少し前に質問されたにもかかわらず、解決策を投稿しました。解決策は、使用しているツールにあります。私の場合はAginityです。解決する方法は2つあります。
Aginityを使用していない場合は、ツールで同様の設定を探してください。
うまくいけば、私はこれで誰かを助けることができました!
使用する create table as
の代わりに select into
。
次のように一時テーブルを作成します。
create table #temp_table as
<subquery>
一時テーブルを次のようにクエリします。
select * from #temp_table
詳細については、以下を参照してください: redshiftでテーブルを作成する方法 。
基本的に、「into」キーワードを使用して、選択クエリの結果を一時テーブルに格納しようとしています。これは簡単に行うことができます。テーブル名の前にdouble hash(##)を使用する必要があります。したがって、クエリは次のようになります。
select top 10 * into ##a from public.item_activity where item_act_timestamp < DATEADD(day,-1,getdate());
select * from ##a;
使用できます
Create temporary table tbl_name as (Select * from abc)
--OR
create temporary table tmp_date_var AS
( SELECT '2017-04-01'::Date AS stdt,'2018-01-31'::Date AS enddt);