提问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,极速登录

怎么用SQL语句得到月累计和年累计的产量值

whj210081  渐入佳境(Lv2)
发表于 2012-4-23 22:16 | 显示全部楼层 |取消关注该作者的回复
产量表(output),表结构如下:
  id             date                 value  
  1        2012-03-01            6500   
  2        2012-03-02           5800
查询output表,实现如下报表,表头如下:
当日产量     月累计      年累计

其中当日产量列就是output表的value列,月累计列的数据是这样的,比如今天是3月15日,月累计就是指从3月1日到3月15日的产量之和,比如今天是3月16日,月累计就是从3月1日到3月16日的产量之和,该怎么用SQL语句得到月累计的值?年累计也是如此,比如今天是3月15日,年累计就是1月、2月再加上3月15天的产量之和,该怎么用SQL语句实现呢?大家帮帮忙!
此帖共有 169 位番薯登录后查看
回复

使用道具 举报

ghz  初出茅庐(Lv3)
发表于 2012-4-24 08:53 | 显示全部楼层 |取消关注该作者的回复
oracle语句如下:
---年累计
select sum(t.value) as value  from output t where to_char(t.date,'yyyy')=to_char(sysdate, 'yyyy')
---月累计
select sum(t.value) as value  from output t where to_char(t.date,'yyyy-MM')=to_char(sysdate, 'yyyy-MM')
  收起(1)
  • whj210081 whj210081

    你好,他公司是这样要求,比如查询3月5日产量,那月累计就是3月1日到5日的产量和,不包括5日以后的产量,查询3月7日的产量,那月累计就是3月1日到7日的产量和,不包括7日以后的产量。年累计也是这样,查询3月5日的,那年累计就是1月的产量和加上2月的产量和,再加上3月1日到5日的产量和,不包括5日以后的产量。你说这样该怎么写?
    2012-04-24 11:13 评论
  • 评论

回复 支持 反对

使用道具 举报

jane 番薯互助团队 FR产品经理
发表于 2012-4-24 09:33 | 显示全部楼层 |取消关注该作者的回复
这种同一列中的计算要在sql中实现很复杂哎
这种问题用FR来做,http://www.finereporthelp.com/#s=%u7D2F%u8BA1
  收起(1)
  • lyjeff420 lyjeff420

    你好我需要这个 啊 怎么打不开  谢谢啦
    2015-07-14 13:49 评论
  • 评论

回复 支持 反对

使用道具 举报

vikou 番薯互助团队 互助新人
发表于 2012-4-24 22:23 | 显示全部楼层 |取消关注该作者的回复
这个在百度上有查询的SQL。其实性能会降低,这是肯定的
  • 评论

回复 支持 反对

使用道具 举报

whj210081  渐入佳境(Lv2)
发表于 2012-4-25 15:48 | 显示全部楼层 |取消关注该作者的回复
Ok,谢谢大家了!{:soso_e101:}
  • 评论

回复 支持 反对

使用道具 举报

8734569  浪迹天涯(Lv4)
发表于 2012-4-25 20:48 | 显示全部楼层 |取消关注该作者的回复
直接用FR的函数就可以了。
  收起(1)
  • mfkpie82080 mfkpie82080

    我也是这个问题如何用FR函数来统计月及年的
    2013-01-05 00:24 评论
  • 评论

回复 支持 反对

使用道具 举报

nc_yongyou  初学乍练(Lv1)
发表于 2013-1-10 15:51 | 显示全部楼层 |取消关注该作者的回复
如何实现的
  • 评论

回复 支持 反对

使用道具 举报

xyzy1008 社区微信达人 渐入佳境(Lv2)
发表于 2016-6-30 23:33 | 显示全部楼层 |取消关注该作者的回复
修练oracle的必备宝典
  • 评论

回复 支持 反对

使用道具 举报

xukun  初学乍练(Lv1)
发表于 2018-6-14 09:16 来自手机 | 显示全部楼层 |取消关注该作者的回复
本人新手,如何实现的,给教教,谢谢
  • 评论

回复 支持 反对

使用道具 举报

shinger@126.com 社区微信达人 初学乍练(Lv1)
发表于 2018-6-21 13:47 | 显示全部楼层 |取消关注该作者的回复
如果用纯SQL的方式来实现的话,数据量不大没问题,超过10W条后性能下降明显.
MSSQL代码如下
SELECT [date],SUM([value]) AS [当日产量],
月累计=(SELECT SUM([value]) FROM [output] b
                      WHERE CONVERT(VARCHAR(6),b.[date],112)=CONVERT(VARCHAR(6),a.[date],112) AND b.[date]<=a.[date]),
年累计=(SELECT SUM([value]) FROM [output] b
                      WHERE YEAR(b.[date])=YEAR(a.[date]) AND b.[date]<=a.[date])
  FROM [output] a GROUP BY [date]
  • 评论

回复 支持 反对

使用道具 举报

shinger@126.com 社区微信达人 初学乍练(Lv1)
发表于 2018-6-21 15:13 | 显示全部楼层 |取消关注该作者的回复
F3公式为sum(e3[!0]{b3=$b3 && c3=$c3 && d3<=$d3}),G3公式为sum(e3[!0]{b3=$b3 && d3<=$d3})
截图201806211511396619.png
截图201806211512174465.png
  • 评论

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

Copyright © 帆软|联系帆软| 联系管理员@兔子酱|免责声明|手机版|帆软社区 ( 苏ICP备14031611号-3 )

GMT+8, 2018-8-17 19:30 , Processed in 0.766564 second(s), 155 queries , Gzip On.

返回顶部 返回列表