USE [CommunityApp] GO /****** Object: StoredProcedure [dbo].[sp_count_OwnerPayList] Script Date: 03/04/2016 11:32:31 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: <Author,,Name> -- Create date: <Create Date,,> -- Description: <Description,,> -- ============================================= ALTER PROCEDURE [dbo].[sp_count_OwnerPayList] @CommunityIDs int,--如果为0查出所有的,不为0则查指定小区 @FeeName nvarchar(50), @StarTime as datetime,--开始时间 @EndTime as datetime --结束时间 AS declare @i int, @j int, @months nvarchar(50),--当前月 @FeeMoney decimal(10, 2), @CommunityID int, @CommunityName nvarchar(50) DECLARE @tCommunity TABLE --所有的小区 ( CommunityID int , CommunityName nvarchar(50) ,FlagID TINYINT ) DECLARE @tYuefen TABLE --所有的月份 ( months nvarchar(50) ,FlagID TINYINT ) DECLARE @tcount TABLE ( CommunityName nvarchar(50),--小区 Months nvarchar(100),--月份 FeeMoney decimal(10, 2) --缴费金额 ) BEGIN --获得小区 star IF @CommunityIDs=0 begin insert @tCommunity select CommunityID,CommunityName,0 from CommunityBase.dbo.CommunityList end else begin insert @tCommunity select CommunityID,CommunityName,0 from CommunityBase.dbo.CommunityList where CommunityID=@CommunityIDs end --获得小区 end --获得月份 star ;with t as (select @StarTime as y union all select dateadd(m,1,y)from t where y <@EndTime) insert @tYuefen select convert(varchar(7),y,120),0 from t --获得月份 end SET @i=1 WHILE( @i>=1) ---第一次循环star BEGIN set @CommunityID='' set @CommunityName='' SELECT TOP 1 @CommunityID = CommunityID,@CommunityName = CommunityName FROM @tCommunity WHERE flagID=0 SET @i=@@ROWCOUNT IF @i<=0 GOTO Return_Lab SET @j= 1 WHILE( @j>=1) ---第二次循环star BEGIN SELECT TOP 1 @months = months FROM @tYuefen WHERE flagID=0 SET @j=@@ROWCOUNT IF @j<=0 GOTO Return_Lab2 IF @FeeName='' begin SELECT @FeeMoney=sum(FeeMoney) FROM OwnerPayList WHERE PayMonth=@months and CommunityID= @CommunityID --月份的钱 end else begin SELECT @FeeMoney=sum(FeeMoney) FROM OwnerPayList WHERE PayMonth=@months and FeeName=@FeeName and CommunityID= @CommunityID --月份的钱 end if @FeeMoney is not null begin insert @tcount values(@CommunityName,@months,@FeeMoney) end IF @@error=0 UPDATE @tYuefen SET flagID=1 WHERE months = @months Return_Lab2: end ---第二次循环 end IF @@error=0 UPDATE @tCommunity SET flagID=1 WHERE CommunityID = @CommunityID Return_Lab: END ---第一次循环 end select * from @tcount