日期:2014-05-17  浏览次数:20547 次

求大侠们,这样的分级汇总怎么做!!!
有如下表:
 列1         列2     列3     列4
1001.001      A       B       3
1001.002      C       D       4
1001.003.001  E       F       5
1001.003.002  G       H       3
求如下结果:
列1         列2     列3     列4
1001.001      A       B       3
1001.002      C       D       4
1001.003.001  E       F       5
1001.003.002  G       H       3
1001.003            小计      8
1001         合计             15
 注:其中列1的级次下还有很多明细的级次.比如:1001.003.001.001

求它的一个分级汇总.


------解决方案--------------------
下面通过函数来实现:

--1.函数
if exists(select * from sys.objects where name = 'f_splitSTR' and type = 'tf')
   drop function dbo.f_splitSTR
go

create function dbo.f_splitSTR
(
@s varchar(8000),     --要分拆的字符串
@split varchar(10)    --分隔字符

returns @re table(                      --要返回的临时表
                     id  int,
                     col varchar(1000)  --临时表中的列 
                 )
as
begin   
  declare @len int
  declare @temp_str varchar(100)
  declare @i int;
  
  set @temp_str = ''
  set @i = 0;
  set @len = LEN(@split)      --分隔符不一定就是一个字符,可能是2个字符
  
  while CHARINDEX(@split,@s) >0
  begin
    set @i = @i + 1
    
    if @i = 1
   &nbs