with CET_Checkin as ( SELECTisnull(sum(dbo.Checkin.Money),0) as Checkin, Convert(varchar(7),dbo.Checkin.InDate,120) as Date from dbo.Checkin GroupbyConvert(varchar(7),dbo.Checkin.InDate,120) ) with CET_Checkout as ( SELECTisnull(sum(dbo.Checkout.Money),0) as Checkout, Convert(varchar(7),dbo.Checkout.Date,120) as Date from dbo.Checkout GroupbyConvert(varchar(7),dbo.Checkout.Date,120) ) select CET_Checkin.CheckIn , CET_Checkout.Checkout, isnull(Convert(varchar(7),CET.Checkout.Date,120),Convert(varchar(7),CET.Checkin.Date,120))as Date from CET_Checkin leftjoin CET_Checkout on CET_Checkin.Date = CET_Checkout.Date
可在一个View里只允许又一个CET,多于一个就会报错,无奈只好又想了个办法,真正的View如下
Select a.Checkin, b.Checkout, (a.Checkin - b.Checkout) as Balance, isnull(Convert(varchar(7),b.Date,120),Convert(varchar(7),a.Date,120))as Date From ( SELECTisnull(sum(dbo.Checkout.Money),0) as Checkout, Convert(varchar(7),dbo.Checkout.Date,120) as Date from dbo.Checkout GroupbyConvert(varchar(7),dbo.Checkout.Date,120) ) as b innerjoin ( SELECTisnull(sum(dbo.Checkin.Money),0) as Checkin, Convert(varchar(7),dbo.Checkin.InDate,120) as Date from dbo.Checkin GroupbyConvert(varchar(7),dbo.Checkin.InDate,120) ) as a on a.Date = b.Date