Foxtable(狐表)用户栏目专家坐堂 → 计算累计数量的查询应该如何写?


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

主题:计算累计数量的查询应该如何写?

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/19 20:31:00 [显示全部帖子]

试试


With cte As
  (
       Select    进出单号 ,
                    进出日期 ,
                    进出类别 ,
                    入库数量 ,
                    出库数量 ,
                    进出数量 ,
                    计量单位 ,
                    ROW_NUMBER() OVER ( PARTITION BY 产品编码 ORDER BY 进出日期, 盘点序号 ) As rowNum
          FROM      uv_ck110
          WHERE     进出日期 >= '2019-06-30'
                    And 产品编码 = 'B0101010'
 )
Select t2.*,
  (  Select SUM(进出数量)
      FROM cte t1
       WHERE t1.rowNum<=t2.rowNum
       ) As 累计数量
 FROM cte t2

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/20 14:24:00 [显示全部帖子]

SqlServer2008也就这样了,试试给进出日期, 盘点序号建一个索引,产品编码建一个索引

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


加好友 发短信
等级:超级版主 帖子:107783 积分:548260 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/7/21 20:08:00 [显示全部帖子]

不是这样理解的,查询的快慢是要看原始数据的,而不是看结果,是要从100W条数据里分析得出结果,不管得到的结果是多少,都是基于这100W的数据进行查询,如果是同一条sql,得到50条结果和得到5000条结果几乎是没有差别的。

 回到顶部