以文本方式查看主题
- Foxtable(狐表) (http://foxtable.net/bbs/index.asp)
-- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2)
---- 写在数据库的视图sql compute语句,可以有条件地求平均值吗? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=55147)
|
-- 作者:fubblyc
-- 发布时间:2014/8/11 18:37:00
-- 写在数据库的视图sql compute语句,可以有条件地求平均值吗?
各位老师好
我之前在项目里写这段代码:
For Each dr As DataRow In DataTables("每日销售").DataRows If dr("辅助列") > 6 Then dr("MA7") = DataTables("每日销售").Compute("Avg("销售额")"," 辅助列 >= " & dr("辅助列")-6 & " And 辅助列 <= " & dr("辅助列") & " ") End If Next
我想直接写在后台数据库里的视图来统计 MA7 这列的值
SELECT dbo.[每日销售].[日期], Compute("Avg("销售额")"," 辅助列 >= " & dr("辅助列")-6 & " And 辅助列 <= " & dr("辅助列") & ") 不知道这个条件要怎么写 FROM dbo.[每日销售] GROUP BY dbo.[每日销售].[日期], dbo.[每日销售].[销售额]
[此贴子已经被作者于2014-8-11 18:38:18编辑过]
|
-- 作者:有点甜
-- 发布时间:2014/8/11 19:14:00
--
额
SELECT dbo.[每日销售].[日期], Avg(销售额)
FROM dbo.[每日销售] GROUP BY dbo.[每日销售].[日期], dbo.[每日销售].[销售额]
Where 辅助列 >= " & dr("辅助列")-6 & " And 辅助列 <= " & dr("辅助列")
[此贴子已经被作者于2014-8-11 19:14:36编辑过]
|
-- 作者:fubblyc
-- 发布时间:2014/8/11 19:37:00
--
甜老师, dr(“辅助”) 是不是狐表特有的,而不能在sql数据库上写。。?
此主题相关图片如下:dr("辅助") 是不是不能在数据库上写.png
[此贴子已经被作者于2014-8-11 19:44:38编辑过]
|
-- 作者:有点甜
-- 发布时间:2014/8/11 19:43:00
--
呃,无语。
|
-- 作者:有点甜
-- 发布时间:2014/8/11 19:44:00
--
在sqlserver里面怎么可能引用foxtable的数据啊。
|
-- 作者:有点甜
-- 发布时间:2014/8/11 19:45:00
--
SELECT dbo.[每日销售].[日期], Avg(销售额)
FROM dbo.[每日销售] GROUP BY dbo.[每日销售].[日期], dbo.[每日销售].[销售额]
Where 辅助列 >= 1 And 辅助列 <= 10
|
-- 作者:fubblyc
-- 发布时间:2014/8/11 19:58:00
--
嗯,甜老师,不是引用狐表的数据,是sql数据库里的数据。
日期 辅助列 销售额
1 10
2 20
3 30
4 40
5 50
6 60
7 70
8 80
9 90
10
根据数据库里的这些数据写视图统计出MA7的值,然后在狐表里就可以直接调用这个视图。。。
日期 辅助列 MA7
1 无数据
2 无数据
3 无数据
4 无数据
5 无数据
6 无数据
7 40 公式=(10+20+30+40+50+60+70)/7
8 50 公式= (20+30+40+50+60+70+80)/7
9 60 公式= (30+40+50+60+70+80+90)/7
意思就是每一行的MA7的值 = 当前行+前6行 的平均值
在狐表里是用遍历的方法,效率不是很高,我想直接在sql数据库里写统计的视图
[此贴子已经被作者于2014-8-11 20:03:38编辑过]
|
-- 作者:fubblyc
-- 发布时间:2014/8/11 20:06:00
--
SELECT dbo.[每日销售].[日期], Avg(销售额)
FROM dbo.[每日销售] GROUP BY dbo.[每日销售].[日期], dbo.[每日销售].[销售额]
Where 辅助列 >= " & dr("辅助列")-6 & " And 辅助列 <= " & dr("辅助列")
现在就是不知道这个当前行 & dr("辅助列") & 的在sql数据里是怎么表示的。查了半天没有找到。。。
|
-- 作者:有点甜
-- 发布时间:2014/8/11 20:07:00
--
SELECT [日期], (Select Avg(销售额) from dbo.[每日销售] b Where a.日期 = b.日期 and b.辅助列 >= a.辅助列 - 6 and b.辅助列 <= a.辅助列) as Max7
FROM dbo.[每日销售] a GROUP BY [日期], [辅助列],
[销售额]
|
-- 作者:fubblyc
-- 发布时间:2014/8/11 21:50:00
--
甜老师您真是厉害。
我研究了半天,终于大概明白了其中的意思。
我试了一下,是这样的结果:
此主题相关图片如下:结果.png
数据是这些:
此主题相关图片如下:数据.png
照理应该是要
辅助列的第七行开始才有MA7的值,而且 第七行的MA7的值应该是要等于 4 。公式:(1+2+3+4+5+6+7)/7
不知道哪里有问题。。。
[此贴子已经被作者于2014-8-11 21:53:31编辑过]
|