2016-05-31 9 views
0

を作成し、私は1機能のMINを選択し、仮想テーブル

SELECT ID, Name, (X + Y) AS TOTAL, MIN(TOTAL) AS MINVALUE FROM TABLE 
を置き、彼は0 virtal列に置く分値ならば、関数の最小値を取る必要はないにしています

ID Name TOTAL MINVALUE 
    1  item 22  0 
    1  item 33  1 
    1  item 50  1 
    2  item2 200  1 
    2  item2 30  0 
+0

あなたは副選択が必要です。 min()は集約関数であり、結果セット全体が利用可能になった時点でのみ動作できますが、行単位で使用しているので、すべての行は同時に自動的に最大値/最小値になります。 'fleとして –

答えて

3

あなたは、このウィンドウ関数とcaseを使用してください:

select id, name, (x + y) as total, 
     (case when (x + y) = min(x + y) over (partition by id) 
      then 0 else 1 
     end) as IsNotMinValue 
from t; 

を私は普通のUnixの慣習0に従ってくださいf "0"は偽であり、 "1"(実際には "0"でない)は真である。したがって、私はそれを解釈する方法ですので、フラグIsNotMinValueを付けました。

+1

合計は列ではありませんが、これは修正するのが簡単で、 – JamieD77

+0

@ JamieD77で動作するはずです。 。 。ありがとうございました。 –

+0

ありがとうございました! –

関連する問題