select Camer as X ,count(*) as Y from PassengersVIEWGroup by Camer order by Y desc我需要显示出Group by求和后的前10条,和后面的其它数据的SUM(Y)
如:
X,     Y
Group1,91
Group2,87
....
Group10,20
其它合计,112

解决方案 »

  1.   

    这样试试,我这里没有表,也不知道有没有语法错误~select [X]=Camer,count(*) from PassengersVIEW  where Camer  in(select distinct top 10  Camer from PassengersVIEW order by Camer desc) group by Camer
    union 
    select [X]='其它合计',count(*) from PassengersVIEW  where Camer not in(select distinct top 10  Camer from PassengersVIEW order by Camer desc)
      

  2.   

    --我自已写了个存储过程,但是不知道有没有更好的方法--exec Proc_Chart ' and OriDate>=''2006-01-01''  and OriDate<=''2006-04-09'' and IsLeave=1 'CREATE Proc Proc_Chart  
     @sql varchar(2000)as
    CREATE TABLE [dbo].[#TEMP] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [x] [varchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [y] [numeric](18, 0) NULL 
    ) ON [PRIMARY]declare @sqlstr varchar(2000)set @sqlstr='insert into #TEMP(X,Y) select Camer as X ,count(*) as Y  from PassengersVIEW  where 1=1'+@sql+' Group by Camer order by Y desc '
    exec(@sqlstr)select  x,y from #TEMP where id<=10 
    union 
    select '其它' as x,SUM(y) AS Y FROM #TEMP where id>10
    GO
      

  3.   

    CREATE Proc Proc_Chart  
     @sql varchar(500)
    as
    declare @sqlstr varchar(2000)
    set @sqlstr='select id=identity(int,1,1),Camer as X ,count(*) as Y  into # from PassengersVIEW  where 1=1'+@sql+' Group by Camer order by id'
    exec(@sqlstr)
    select x,y  from # where id<=10 
    union 
    select '其它' as x,SUM(y) AS Y FROM # where id>10
      

  4.   

    先把group by的结果作为一个id(identity(int,1,1))的表 a,再用select top 10 from a union select sum() from a where id > 10
      

  5.   

    不要用动态语句吧
    直接select id=identity(int,1,1),Camer as X ,count(*) as Y  into # from PassengersVIEW  
    Group by Camer order by Y desc -------------------------------------------
    然后后面用
    select  x,y from #TEMP where id<=10 
    union 
    select '其它' as x,SUM(y) AS Y FROM #TEMP where id>10就行
      

  6.   

    动态语句是为了过滤条件..where...一语句...
      

  7.   

    select top 10 Camer as X,count(*) as Y
    from PassengersVIEW
    Group by Camer order by Y descselect  Camer as X,sum(*) as Y
    from PassengersVIEW
    Group by Camer order by y desc
    where not exists(select top 10 from PassengersVIEW)
      

  8.   

    涉及到分页了,如果非要在一个sql中写的话:
    select sum(Y) from
    (
    select X,Y,rownum r from
     (
      select Camer X ,count(*) Y from PassengersVIEW
      Group by Camer order by Y desc
     )tab
     where r>=10
    )