求一SQL。。。

a787822951 2013-02-17 10:05:02

如图所示,如何用sql使其变成这样的效果

就是用总金额,依次减去每次用的费用,symoney指剩余的金额
...全文
168 8 打赏 收藏 举报
写回复
8 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
a787822951 2013-02-20
引用 7 楼 sc273607742 的回复:
引用 6 楼 a787822951 的回复:引用 4 楼 sc273607742 的回复:这两个表的关系没弄,你给的数据好像不能匹配...是用nos还是nos3? NOS3 那用5楼的吧,应该没问题的
我把3楼的改了下,就好用了, 嘻嘻
  • 打赏
  • 举报
回复
引用 6 楼 a787822951 的回复:
引用 4 楼 sc273607742 的回复:这两个表的关系没弄,你给的数据好像不能匹配...是用nos还是nos3? NOS3
那用5楼的吧,应该没问题的
  • 打赏
  • 举报
回复
a787822951 2013-02-17
引用 4 楼 sc273607742 的回复:
这两个表的关系没弄,你给的数据好像不能匹配...是用nos还是nos3?
NOS3
  • 打赏
  • 举报
回复
两个表用nos3去匹配用下面的语句就行

with tb(nos,datatime,money,nos3,symoney) as (
select 'A00001','20130101',200,'D0001',800 union all
select 'A00002','20130102',200,'D0001',null union all
select 'A00003','20130103',200,'D0001',null union all
select 'B00001','20120101',200,'D0002',null union all
select 'B00002','20120102',200,'D0002',null union all
select 'B00003','20120103',200,'D0002',null )
,tbb(nos,datatime,money,nos3)as(
select 'YSA00001','20130101',1000,'D0001' union all
select 'YSA00002','20130105',1000,'D0002'
)
select a.nos,a.datatime,a.money,a.nos3,c.money-sum(b.money) as symoney from tb a,tb b,tbb c
where b.datatime<=a.datatime and a.nos3=b.nos3 and a.nos3=c.nos3
group by a.nos,a.datatime,a.money,a.nos3,c.money
  • 打赏
  • 举报
回复
这两个表的关系没弄,你给的数据好像不能匹配...是用nos还是nos3?
  • 打赏
  • 举报
回复
szm341 2013-02-17

select zmoney-(select sum(money) from tb where nos3=a.nos3 and nos<=a.nos group by nos3) 
from tb as a
  • 打赏
  • 举报
回复

with tb(nos,datatime,money,nos3,symoney) as (
select 'A00001','20130101',200,'D0001',800 union all
select 'A00002','20130102',200,'D0001',null union all
select 'A00003','20130103',200,'D0001',null union all
select 'B00001','20120101',200,'D0002',null union all
select 'B00002','20120102',200,'D0002',null union all
select 'B00003','20120103',200,'D0002',null )
,tbb(nos,datatime,money,nos3)as(
select 'YSA00001','20130101',1000,'D00001' union all
select 'YSA00002','20130105',1000,'D00002'
)
select a.nos,a.datatime,a.money,a.nos3,c.money-sum(b.money)/2 as symoney from tb a,tb b,tbb c
where b.datatime<=a.datatime and a.nos3=b.nos3
group by a.nos,a.datatime,a.money,a.nos3,c.money
  • 打赏
  • 举报
回复
a787822951 2013-02-17
没人吗?
  • 打赏
  • 举报
回复
发帖
应用实例

2.7w+

社区成员

MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
帖子事件
创建了帖子
2013-02-17 10:05
社区公告
暂无公告