do it in the database, use left outer join

解决方案 »

  1.   

    what are you using? DataSet or DataReader?
      

  2.   

    1、按住户统计应交费用合计
    select CpsHseId,dbo.FunGetCurYM(CpsHseId,'2002','8','未收') as '所含时间',sum(case CpsStatus when '未收' then CpsTotalPrice else 0 end) from Twy_ChargePays where CpsHseId=25760 group by CpsHseId
    2、函数:取得当月以前费用发生年月及金额*/
    /*drop function FunGetCurYM*/
    CREATE FUNCTION FunGetCurYM(@CpsHseId nvarchar(10),@YearS nvarchar(4),@MonthS nvarchar(2),@CpsStatus nvarchar(10))
    RETURNS nvarchar(500)
    as
     begin
       declare @YMValue nvarchar(50)
       declare @Value   nvarchar(500)
       set @YMValue=''
       set @Value  =''
       if len(rtrim(ltrim(@MonthS)))<2 
        begin
          set @MonthS='0'+@MonthS
        end 
       declare YMList cursor for 
               select CpsDate from Twy_ChargePays 
               where ceiling(CpsYear+case when len(ltrim(rtrim(CpsMonth)))<2 then '0'+CpsMonth else CpsMonth end) <=ceiling(@YearS+@MonthS)
               and CpsHseId=@CpsHseId and CpsStatus=@CpsStatus order by ceiling(CpsYear+case when len(ltrim(rtrim(CpsMonth)))<2 then '0'+CpsMonth else CpsMonth end)
       open YMList
       fetch next from YMList into @YMValue
       while @@Fetch_Status = 0
        begin
           set @Value=case when len(ltrim(rtrim(@YMValue)))>0 then @Value+' '+@YMValue else @YMValue end
           set @YMValue=''
           fetch next from YMList into @YMValue
        end
       close YMList
       deallocate YMList 
      return(@Value)
     end 自定义函数取得发生费用的时间资料太慢,也不是个好办法。我就是想请教你把结果集的列集合并入另一集合作为行中字段的方法。
    连呼1000000声谢谢。