2017-02-13 1 views
0

ネストされたSQLクエリから最大値を検索し、同じクエリでその最大値を再度使用するのは良いアプローチですか?例えばネストされたSQLクエリから最大値を検索し、同じクエリでその最大値を再度使用するとよいでしょうか

は:

Select Col1, Col2, Col3, Col2/Col3 AS Col4, CASE Alot of statements END Col5 
from Table A inner join Table B on A.Id = B.Id 
Inner Join Table C on B.Id = C.Id 
Inner Join Table D on C.Id = D.Id 

は今はCol5から最大の整数を見つける必要があり、その後最大値がCol4値を分割することを使用します。
また、col1col2を結果とともに表示する必要があります。

期待される結果:
のCol1、Col2に、(COL5のCOL4/MaxValueを)

誰もが、この場合の最善の解決策何私を導いてもらえますか?

あなたが共通テーブル式を使用することができます

答えて

1

を:

Select Col1, Col2, 
     ((Col2/Col3)/
     max(case Alot of statements end) over() 
     ) as ratio 
from Table A inner join 
    Table B 
    on A.Id = B.Id Inner Join 
    Table C 
    on B.Id = C.Id Inner Join 
    Table D 
    on C.Id = D.Id; 

ティムの答えは間違いなく良い答えです最終結果セットに2回以上col5が必要な場合。

1

:それらはあなたが必要とする唯一の結果であるならば、ノーサブクエリ/ CTEが必要とされ、

WITH cte AS (
    SELECT Col1, Col2, Col3, Col2/Col3 AS Col4, 
      CASE Alot of statments END Col5 
    FROM TableA A 
    INNER JOIN TableB B 
     ON A.Id = B.Id 
    INNER JOIN TableC C 
     ON B.Id = C.Id 
    INNER JOIN TableD D 
     ON C.Id = D.Id 
) 
SELECT t.Col1, t.Col2, 
     t.Col4/MAX(t.Col5) OVER() 
FROM cte t 
関連する問題