Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server 2005:查找/访问(currentrow-N)的值&;实施一个公式?_Sql_Sql Server 2005 - Fatal编程技术网

SQL Server 2005:查找/访问(currentrow-N)的值&;实施一个公式?

SQL Server 2005:查找/访问(currentrow-N)的值&;实施一个公式?,sql,sql-server-2005,Sql,Sql Server 2005,我有一个包含四列(年、月、名称和值)的表 我想添加另一列(新的_值),该列由以下公式计算 新值=(当前月份的值/当前月份的值-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 200

我有一个包含四列(年、月、名称和值)的表

我想添加另一列(新的_值),该列由以下公式计算

新值=(当前月份的值/当前月份的值-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
e、 g:08月份

新值=(4.636/4.246)^1/3

忽略前四个月的计算

如何在SQL中以编程方式获取“currentMonth-4”值


谢谢

只需在该月将表自身加入(可能还有其他列,我不知道您的数据)


类似于@tetra中子:

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))
选择tb.Name、tb.Value、POWER(tb.Value/ta.Value.3333)作为新值
从…起
你的桌子,
你的表肺结核
哪里
(tb.month>4,ta.month=tb.month-4,tb.year=ta.year)

或者(tb.Month)从问题“忽略前四个月的计算”开始,这将失败1-4个月
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))