私はこのSQLクエリを使用して一種の助けが必要です。私はこのように現在構造化されているサブクエリの6つのレイヤーを持つクエリを持っています。ときT2.BB> 100 Bし、「ときE> 200ケースを」(例えば、私は(ケース」で置き換えることができヒントSQLクエリ
同じ文を繰り返すことなくレイヤーを削減:私はどのようにアドバイスするために楽しみにしています+ C他のB + D端)> 200' 、ひいてはレイヤ2を排除し、レイヤ1で文を書く。私の生のクエリで、私はそのサブに別の計算列に基づいて計算列を持っているので、私はこれを行うことはできませんクエリはサブサブクエリの別の計算列に基づいて計算されるので、5/6時間の繰り返しは私を混乱させ、私を狂わせるでしょう...
選択2を避けてください。、 1を選択してください。 gの全ての列の最終出力(F、E、A、B、C、D、T2.BB)。私の生のクエリで選択5があるので、私はこれをしたい* - 。これは、サーバがはるかに冗長な仕事をするために発生し、クエリの実行を遅くように私は感じます。
ありがとうございました!
Select
2.*,
case when E > 200 then 'OK' else 'OH NO' end F
From
(Select
1.*,
Case when T2.BB >100 then B+C else B+D end E
From
(Select
A, B, C, D, T2.BB
From
T1
Join
T2 on T1.A = T2.AA) 1
) 2
一箇所にそのロジックをカプセル化する私たちは、あなたがこのサーバは多くの冗長化を行うために原因のように私は感じる」 – gjvdkamp
を使用しているもののデータベースを知っている必要があります、いずれかの次のステートメントからの文との事前を参照することができる2つの異なる場所あなたが分析を行う場合にのみ、あなたは確信することができますengienフード – jean
こんにちは@gjvdkampの下でそれをoptmizeすることができますので、クエリプランをSE。 Amazon Redshiftです。 – orzking