zoukankan      html  css  js  c++  java
  • SQL Server迭代求和

    drop table t_geovindu
    
    create table t_geovindu
    (
    	xid int IDENTITY (1, 1),
    	price money,
    	DebitCredit VARCHAR(2),
    	adate datetime default(getdate())
    	
    )
    
    insert into t_geovindu(DebitCredit,price) values('C',10)
    insert into t_geovindu(DebitCredit,price) values('C',25)
    insert into t_geovindu(DebitCredit,price) values('C',36)
    insert into t_geovindu(DebitCredit,price) values('C',66)
    insert into t_geovindu(DebitCredit,price) values('D',-11)
    insert into t_geovindu(DebitCredit,price) values('C',32)
    insert into t_geovindu(DebitCredit,price) values('D',-50)
    
    
    --
    select a.xid, a.price,
     (select sum(price) from t_geovindu b where b.xid <= a.xid) as Balance,DebitCredit  
    from t_geovindu a
    
    --
    select xid, price, 
     (case  when Balance  is null then price else Balance  end ) as Balance 
    from
     (select a.xid, (select  sum(price) from t_geovindu b where b.xid < a.xid)  as Balance  , a.price
    from t_geovindu a)  x
    --
    
    select  sum(price) from t_geovindu b where (b.xid < a.xid)
    
    select a.xid, (select  sum(price) from t_geovindu b where b.xid < a.xid)  as Balance  , a.price
    from t_geovindu a
    
    ---
    create function mysum(@xh int, @price int) returns int
    begin
       return (select 
               (case when Balance  is null then @price  else Balance  end) as Balance  
              from ( select  sum(price) as Balance  from t_geovindu where xid < @xh) x)
    end
    ---
    select xid, price, dbo.mysum(xid, price)  as Balance 
    from t_geovindu
    
    
    
    
    
    
    
    create table vipnoDly
    (
    	VID Int IDENTITY (1, 1) PRIMARY KEY, invoiceno nvarchar(50),indate datetime, vipno nvarchar(50),amount int,dcr nvarchar(20)
    )
    go
    
    SET IDENTITY_INSERT [dbo].vipnoDly ON 
    Insert vipnoDly(invoiceno,indate,vipno,amount,dcr) Select invoiceno,indate,vipno,amount,dcr From vipdly AS A Where vipno='geovindu' order by A.indate
    
    select * from vipnoDly
    
    --SET IDENTITY_INSERT dbo.Tool ON
    
    
    Create Function [dbo].[GetVipNoDlyList]
    (
    	@ID nvarchar(20)
    )
    Returns @Tree Table (VID Int IDENTITY (1, 1), invoiceno nvarchar(50),indate datetime, vipno nvarchar(50),amount int,dcr nvarchar(20))
    As
    Begin
    Insert @Tree(invoiceno,indate,vipno,amount,dcr) Select invoiceno,indate,vipno,amount,dcr From vipdly AS A Where vipno=@ID order by A.indate
    Return
    End
    GO
    
    select * from [dbo].[GetVipNoDlyList] ('geovindu') as a order by indate
    
    ---SQL Server聚合函数和子查询迭代求和
    ---如果ID不是第一條記錄,會出現第一行統計合計有問題,所以需查詢生成一個新的ID增長記錄
    ---銷售單號碼  銷售單日期 所得/已使用積分 可用積分 積分類別 
    select a.invoiceno as '銷售單號碼', a.indate as '銷售單日期',a.amount as '所得/已使用積分',
     (select sum(amount) from [dbo].[GetVipNoDlyList] ('geovindu') b where b.VID <= a.VID) as '可用積分',a.dcr as '積分類別'  
    from [dbo].[GetVipNoDlyList] ('geovindu') a
    
  • 相关阅读:
    android修改debug keystore文件使之和正式keystore sha1一致
    scrollView中可以自由滚动的listview
    android gradle的全局管理
    OpenGL学习笔记(三)
    OpenGL学习笔记(二)
    OpenGL学习笔记(一)
    Java编程代码规范中值得留意的地方
    mac上编译Android的arm64位ffmpeg
    入门程序员必读的10本经典书单
    [Android文档翻译]设备兼容性
  • 原文地址:https://www.cnblogs.com/geovindu/p/3238572.html
Copyright © 2011-2022 走看看