我有一个表,大概数据是这样的:   主叫号码    被叫号码    开始时间    结束时间    通话时长 
855225522  855225500  09:49:53  09:50:16    23 
....... 
....... 
....... 我想要个总计,如何写,例如: 
  主叫号码    被叫号码    开始时间    结束时间    通话时长 
855225522  855225500  09:49:53  09:50:16    23 
....... 
....... 
....... 
  总计                                                        123因为要每一条记录的明细,所以不能用分组。而用以下联合查询:select 主叫号码,被叫号码,开始时间,结束时间,通话时长  from tb
union all
select '总计','','','',sum(通话时长) as 通话时长 from tb由于有时间类型字段,则不会为空的,而是会产生一些无用时间;
求一个解决的办法

解决方案 »

  1.   

    select 主叫号码,被叫号码,cast(开始时间 as varchar) 开始时间,cast(结束时间 as varchar) 结束时间,通话时长  from tb 
    union all 
    select '总计','','','',sum(通话时长) as 通话时长 from tb 
      

  2.   

    select 主叫号码,被叫号码,cast(开始时间 as varchar) 开始时间,cast(结束时间 as varchar) 结束时间,通话时长  from tb 
    union all 
    select '总计','','','',sum(通话时长) as 通话时长 from tb --如果你开始时间, 结束时间的类型是datetime型
    select 主叫号码,被叫号码,convert(varchar(8),开始时间,114) 开始时间,convert(varchar(8),结束时间,114) 结束时间,通话时长  from tb 
    union all 
    select '总计','','','',sum(通话时长) as 通话时长 from tb 
      

  3.   

    select rtrim(主叫号码) as 主叫号码,rtrim(被叫号码) as 被叫号码,rtrim(开始时间) as 开始时间,rtrim(结束时间) as 结束时间,通话时长  from tb
    union all
    select '总计','','','',sum(通话时长) as 通话时长 from tb 
      

  4.   

    select '总计',null,null,null,sum(通话时长) as 通话时长 from tb 
      

  5.   

    由于有时间类型字段,则不会为空的,而是会产生一些无用时间确切指的是什么?不要前面的年月日和后面的毫秒还是?如果使这个,转换为字符串然后截取select 主叫号码,被叫号码,开始时间=substring(cast(开始时间 as varchar) 开始时间,10,18),
        结束时间=substring(cast(开始时间 as varchar) 开始时间,10,18),通话时长  from tb  
    union all
    select '总计','','','',sum(通话时长) as 通话时长 from tb 
      

  6.   

    select 主叫号码,被叫号码,convert(varchar(8),开始时间,114) 开始时间,convert(varchar(8),结束时间,114) 结束时间,通话时长  from tb 
    union all 
    select '总计','','','',sum(通话时长) as 通话时长 from tb