Redshift SQLはかなり新しく、構文に何が問題なのかを解明しようとしています。Redshift - SQL Left Joinは、相関サブクエリと集約関数とでは機能しません。
私の仕事はテーブルquestion
とuser
の2つのテーブルを結合することです。テーブルquestion
のすべての値を保持したいからです。
現時点では、[Amazon](500310) Invalid operation: This type of correlated subquery pattern is not supported yet;
私はleft join
を使用すると、次のエラーメッセージがスローされます。一方、コードをjoin
に変更するとうまくいきます。これは私のサブクエリ内に集計された関数と論理式があり、左の結合を内部結合にするためです。
しかし、上記のとおり、テーブルquestion
のすべての値を保持する必要があります。
以下は私のコード
select
qa.user_id as user_email,
i.timestamp as session_login_time,
qa.timestamp as question_ask_time,
qa.question_id,
qa.question
from
schema1.question as qa
left join
schema1.user as i
on
qa.user_id = i.email
and
i.timestamp =
(select
max(timestamp)
from schema1.user
where
timestamp <= qa.timestamp)
where user_email <> 'tester' and user_email not like '%tester.com'
group by qa.user_id, i.timestamp, qa.timestamp, qa.question_id, qa.question
サブクエリの目的はquestion_ask_time
のそれぞれに最も近いsession_login_time
を取得することです。したがって、question
の複数の行は、同じsession_login_time
値を持つことができます。
上記のコードに記載されていないものが見つかりましたか?私は左の結合作業をどのようにするのですか?
ありがとうございました!
を伴うことなく、あなたに同じ結果を得る必要がありますね終わり、それは働くだろうか? - 私は今テストすることはできません。あなたの意見を得たいだけです。 – user7799677
2つの列が何らかの方法で関連している各テーブルの行から構成された行を作成するには、それは 'join'' on'です。また、値をsubselect内のanyのいずれかにしたい場合、それは 'in'です。あなたはjoin join in、スカラーサブクエリ&を互いに置き換えることができます。 – philipxy