我很惊讶这个问题以前似乎没有被问过,但如果是这样的话,我的相当详尽的搜索还没有发现它。
我在列中有一个简单的温度环缓冲区,我想从中计算平均值。
sql表看起来像这样(列名显示在顶行)......
uid Temp
1 70
2 70
3 70
4 70
5 70
6 69
7 69
8 69
9 69
10 69
每当我获得新的温度时,我想转移" Temp"在将最新值写入插槽' 10'之前列一行所以我可以得到列数据的平均值。
必须有一个简单的方法来做到这一点,我还没有想到。 : - (
答案 0 :(得分:2)
你可以这样做:
delete from buffer where id = 1;
update buffer set id = id - 1;
insert into buffer(id, temp) values(10, @temp);
但是,我会保留所有温度值并使用另一种方法来获得10个单位的移动平均值。
答案 1 :(得分:0)
搞定了!!
-- shift column values up one row.
UPDATE [myTable]
SET [temp] = (SELECT [temp]
FROM [myTable] AS s2
WHERE s2.[uid] = ([myTable].[uid] +1))
WHERE [uid] <= 9;
根据需要,这会将特定单元格向上移动一行。
它比我想象的要复杂得多,但这似乎完全符合我的需要。 [: - )}