请问,如果写sql处理用sql产生的类似于交叉报表的结果集,针对这个结果集再分组,并且小计、合计呢?
下面的脚本是写在存储过程中的,然后用delphi程序调用,产生交叉报表,现在我还希望,结果集按照c_pcid进行分组,并且每一组一个小计,放在组的后面,最后,一条合计。不知是否可行?我不想在delphi中处理,不知道在sql中可否直接处理了,谢谢帮助!
下面是存储过程的一部分内容:
set @sql = ' select c_PCID,C_CUSTID,max(c_CustName) as 客户名称,'
select @sql = @sql + 'sum(case C_PTID when '''+C_PTID+''' then N_SALEWEIGHT else 0 end ) as '+ c_PTName +','
+ ' sum(case C_PTID when '''+C_PTID+''' then N_PRICE else 0 end ) as '+ c_PTName +'单价 ,'
+ ' sum(case C_PTID when '''+C_PTID+''' then N_SALEWEIGHT_m else 0 end ) as '+ c_PTName +'销售金额 ,'
from (select distinct C_PTID,c_PTName,N_PRICE from #XS_REP_CLIENTPROD_CHX) a
select @sql = left(@sql,len(@sql)-1)+ ' from #XS_REP_CLIENTPROD_CHX group by c_PCID,C_CUSTID,N_PRICE '
exec(@sql)