Foxtable(狐表)用户栏目专家坐堂 → 写在数据库的视图sql compute语句,可以有条件地求平均值吗?


  共有4512人关注过本帖树形打印复制链接

主题:写在数据库的视图sql compute语句,可以有条件地求平均值吗?

帅哥哟,离线,有人找我吗?
fubblyc
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
写在数据库的视图sql compute语句,可以有条件地求平均值吗?  发帖心情 Post By:2014/8/11 18:37:00 [显示全部帖子]

各位老师好

 

我之前在项目里写这段代码:

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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/8/11 19:37:00 [显示全部帖子]

甜老师, dr(“辅助”) 是不是狐表特有的,而不能在sql数据库上写。。?

 


图片点击可在新窗口打开查看此主题相关图片如下:dr("辅助") 是不是不能在数据库上写.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2014-8-11 19:44:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/8/11 20:06:00 [显示全部帖子]

SELECT
dbo.[每日销售].[日期],
Avg(销售额)

FROM
dbo.[每日销售]
GROUP BY
dbo.[每日销售].[日期],
dbo.[每日销售].[销售额]

Where  辅助列 >=  " & dr("辅助列")-6 & "  And 辅助列 <= " & dr("辅助列")

 

现在就是不知道这个当前行  & dr("辅助列") &   的在sql数据里是怎么表示的。查了半天没有找到。。。


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By: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编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/8/11 21:56:00 [显示全部帖子]

甜老师,我把数据库地址发给你,你看下。。不然你不好测试。。


 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/8/11 22:08:00 [显示全部帖子]

 如果直接用时间能实现也行。用辅助列是之前在狐表的做法。。。

 
图片点击可在新窗口打开查看此主题相关图片如下:结果2.png
图片点击可在新窗口打开查看

 



[此贴子已经被作者于2014-8-11 22:13:30编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
fubblyc
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2014/8/11 22:10:00 [显示全部帖子]

甜老师,可以啦。嘿嘿嘿 


图片点击可在新窗口打开查看此主题相关图片如下:ok.png
图片点击可在新窗口打开查看

 

就是 1~6还有数据。。。但是后面已经对了。。。

 

谢谢甜老大。这个花了我半天的时间

[此贴子已经被作者于2014-8-11 22:13:00编辑过]

 回到顶部