最近领导给了一个光荣而艰巨的任务:掌管公司软件部伙食费用收支。Too Boring,如果你用笔天天记录的话,还好做一个简单的系统也不难一个下午搞定。做到汇总就头疼了,最后干脆一个View搞定,哈哈

数据库中的表如下图:


一个比较变态的View  一个比较变态的View

View功能:
    查询每个月总收入和总支出并计算每个月收入支出差额

刚开始的View犯了一个错误就是卡迪尔乘积导致联合查询结果一远远大于真正的结果,错误的View如下:



后来就想改用T-SQL Enhancement in SQL Server 中的CET,如下:
一个比较变态的Viewwith CET_Checkin 
一个比较变态的View
as
一个比较变态的View(
一个比较变态的View    
SELECT  isnull(sum(dbo.Checkin.Money),0as Checkin,
一个比较变态的View            
Convert(varchar(7),dbo.Checkin.InDate,120as Date
一个比较变态的View    
from    dbo.Checkin
一个比较变态的View    
Group by Convert(varchar(7),dbo.Checkin.InDate,120)
一个比较变态的View)
一个比较变态的View
一个比较变态的View
with CET_Checkout 
一个比较变态的View
as
一个比较变态的View(
一个比较变态的View    
SELECT  isnull(sum(dbo.Checkout.Money),0as Checkout,
一个比较变态的View            
Convert(varchar(7),dbo.Checkout.Date,120as Date
一个比较变态的View    
from    dbo.Checkout
一个比较变态的View    
Group by Convert(varchar(7),dbo.Checkout.Date,120)
一个比较变态的View)
一个比较变态的View
一个比较变态的View
select     CET_Checkin.CheckIn , CET_Checkout.Checkout,
一个比较变态的View         
isnull(Convert(varchar(7),CET.Checkout.Date,120),Convert(varchar(7),CET.Checkin.Date,120))as Date
一个比较变态的View
from     CET_Checkin left join CET_Checkout
一个比较变态的View
on         CET_Checkin.Date = CET_Checkout.Date

可在一个View里只允许又一个CET,多于一个就会报错,无奈只好又想了个办法,真正的View如下
一个比较变态的ViewSelect     a.Checkin, b.Checkout,
一个比较变态的View         (a.Checkin 
- b.Checkout) as Balance,
一个比较变态的View         
isnull(Convert(varchar(7),b.Date,120),Convert(varchar(7),a.Date,120))as Date
一个比较变态的View
From    
一个比较变态的View(
一个比较变态的View        
SELECT  isnull(sum(dbo.Checkout.Money),0as Checkout,
一个比较变态的View            
Convert(varchar(7),dbo.Checkout.Date,120as Date
一个比较变态的View        
from    dbo.Checkout
一个比较变态的View        
Group by Convert(varchar(7),dbo.Checkout.Date,120)
一个比较变态的View)        
as b
一个比较变态的View
inner join
一个比较变态的View(
一个比较变态的View        
SELECT  isnull(sum(dbo.Checkin.Money),0as Checkin,
一个比较变态的View            
Convert(varchar(7),dbo.Checkin.InDate,120as Date
一个比较变态的View        
from    dbo.Checkin
一个比较变态的View        
Group by Convert(varchar(7),dbo.Checkin.InDate,120)
一个比较变态的View)        
as a
一个比较变态的View
on        a.Date = b.Date
一个比较变态的View

结果如下:
一个比较变态的View

全部系统源代码 /Files/hongyuniu/Consumes.rar

相关文章:

  • 2021-09-30
  • 2021-05-28
  • 2021-09-25
  • 2021-08-17
  • 2021-05-23
  • 2021-06-22
  • 2021-12-05
  • 2021-12-04
猜你喜欢
  • 2022-12-23
  • 2021-04-08
  • 2021-08-27
  • 2021-08-01
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案