2009-06-15 4 views
0

私は4つの列(年、月、名前&値)を持つテーブルがあるSQL Server 2005:(currentrow-N)の値を検索してアクセスし、式を実装していますか?

私は、次の式

NEW_VALUE =(currentMonthのVALUE/VALUEによって計算される別の列(NEW_VALUE)を追加したいです(currentMonth-4))^ 1/3

Year Month NAME VALUE NEW_VALUE 
2008  01  A  4.412  ? 
2008  02  B  4.941 
2008  03  C  4.815 
2008  04  D  4.246 
2008  05  E  4.100 
2008  06  F  4.490 
2008  07  G  4.465 
2008  08  H  4.636 
2008  09  I  4.045 
2008  10  J  5.543 
2008  11  K  5.722 
2008  12  L  5.326 

例:月08

のために0

NEW VALUE =(4.636/4.246)^ 1月3日

は、最初の4ヶ月間の計算を無視

どのように私はSQLでプログラム「currentMonth-4'th値を得るのですか?

おかげ

答えて

1

ちょうど月に自分自身にテーブルを結合する(そしておそらく他の列、私はあなたのデータを知らない)

@Tetraneutronと同様に
select TB.Name, TB.Month, (TB.Value/TA.Value)^1/3 -- This calculation won't work, but your parameters are there 
from YourTable TA 
join YourTable TB 
on TA.Month = TB.Month - 4 
+0

1〜4ヶ月間は失敗する – richardtallent

+0

質問 から "最初の4ヶ月間計算を無視する" – Tetraneutron

+0

私の悪い...質問でそれを逃した... – richardtallent

1

SELECT tb.Name, tb.Value, POWER(tb.value/ta.value, .3333) AS NewValue 
FROM 
    yourtable ta, 
    yourtable tb 
WHERE 
    (tb.month>4 AND ta.month=tb.month-4 AND tb.year=ta.year) 
    OR (tb.month<=4 AND ta.month=(8+tb.month) AND tb.year=(ta.year+1))