一个SQL问题

zls0303 2002-08-20 10:04:58
我的一个软件,要实现以下功能

我的一个销售统计表单

如下所示:(每一条记录代表发生的一个记录,这是表中数据)

系统编号    发生日期   发生金额   
P0001     2002-7-8   500
P0002     2002-7-9   700
P0003     2002-7-12   200

我要从上面的记录中得到的东西如下:
假设今天是7月12日晚上,我要计算出这天与最近一天的发生金额的差距,如:
7月9号与7月8号的差距是700-500=200,7月12号与07月9号的差距是200-700=-500,这中间因为,7月10号与11号没有发生业务,当然,还要考虑到一天可能要发生好多笔业务,就是求出当天的总发生金额,可以用SUM,这样用SQL查询能得到吗?
可能要用后台的存贮过程,但是这个软件已经不能用存贮过务了,因为软件是购买的。但可以用SQL,如果写了??
...全文
23 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
supsuccess 2002-08-20
  • 打赏
  • 举报
回复
我理解错了???
alphen 2002-08-20
  • 打赏
  • 举报
回复
再精简一下
select a.发生日期, a.发生金额,a.发生金额-
(select top 1 发生金额 from tablename
where a.发生日期 >发生日期 order by 发生日期 desc) as 差额
from tablename as a
alphen 2002-08-20
  • 打赏
  • 举报
回复
改一下
select a.发生日期, a.发生金额,a.发生金额-
(select top 1 b.发生金额 from tablename as b
where a.发生日期 >b.发生日期 order by b.发生日期 desc) as 差额

from tablename as a

我试过了,完全正确
alphen 2002-08-20
  • 打赏
  • 举报
回复
select a.发生日期, a.发生金额,a.发生金额-
(select top 1 b.发生金额 from cdata1.dbo.Table2 b
where a.发生日期 >b.发生日期 order by b.发生日期 desc) as 差额

from tablename as a
zls0303 2002-08-20
  • 打赏
  • 举报
回复
我来试一试啊
Yang_ 2002-08-20
  • 打赏
  • 举报
回复
最好分两步:
select 发生日期,sum(发生金额) as 发生金额 into #a from 销售统计表 group by 发生日期

select a.发生日期,a.发生金额,a.发生金额-isnull(b.a.发生金额,0) as 差距 from
#a as a,
#a as b
where b.发生日期=(select max(发生日期) from #a where 发生日期<a.发生日期)
Yang_ 2002-08-20
  • 打赏
  • 举报
回复
select a.发生日期,a.发生金额,a.发生金额-isnull(b.a.发生金额,0) as 差距 from
(
select 发生日期,sum(发生金额) as 发生金额 from 销售统计表 group by 发生日期
) as a,
(
select 发生日期,sum(发生金额) as 发生金额 from 销售统计表 group by 发生日期
) as b
where b.发生日期=(select max(发生日期) from 销售统计表 where 发生日期<a.发生日期)

supsuccess 2002-08-20
  • 打赏
  • 举报
回复
试试:
select isnull(sum(发生金额),0) - (select isnull(sum(发生金额),0)
from tablename
where 发生日期=(select top 1 发生日期
from tablename
where 发生日期<'2002-7-12'
order by 发生日期 desc)) as 差额
from tablename
where 发生日期='2002-7-12'
j9988 2002-08-20
  • 打赏
  • 举报
回复
上面错了
select a.系统编号,a.发生日期,a.发生金额,(a.发生金额-b.发生金额)
from tablename a,tablename b where
b.发生日期=(select max(发生日期) from tablename where 发生日期<a.发生日期
j9988 2002-08-20
  • 打赏
  • 举报
回复
select a.系统编号,a.发生日期,a.发生金额,(a.发生金额-b.发生金额)
from tablename a,tablename b where a.系统编号=b.系统编号 and
b.发生日期=(select max(发生日期) from tablename where 发生日期<a.发生日期)

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧