id    名称      种类 
1    西瓜      1 
2    西瓜      0 
3    香蕉      1 
4    香蕉      1 
5    香蕉      0 
6    苹果      0 
7    桔子      0 
8    桔子      0  我要求出 
1.按名称分组,然后这个名称的种类里面有1的排在前面。 
2.按名称分组,然后这个名称的种类里面有1多的的排在前面(如果种类里的1一样多,就按该名称下的条数由大到小排)。 

解决方案 »

  1.   

    select * from 表order by [名字],种类 desc
      

  2.   

    第一条应该这样就可以了create table #Tmp  --创建临时表#Tmp
    (
        ID   int      not null, --创建列ID,并且每次新增一条记录就会加1
        Name                varchar(50),   
        cate                varchar(50),   
        primary key (ID)      --定义ID为临时表#Tmp的主键      
    );
    insert into #Tmp values('1','西瓜','1' )
    insert into #Tmp values('2','西瓜','0' )
    insert into #Tmp values('3','香蕉','1' )
    insert into #Tmp values('4','香蕉','1' )
    insert into #Tmp values('5','香蕉','0' )
    insert into #Tmp values('6','苹果','0' )
    insert into #Tmp values('7','桔子','0' )
    insert into #Tmp values('8','桔子','0' )select Name from #Tmp group by Name order by sum(convert(int,cate)) desc
      

  3.   

    这个是第二个SQLselect Name from #Tmp group by Name order by sum(convert(int,cate)) desc,count(*) desc
      

  4.   

    如果种类不是0,1而是 aaa,bbb这样的话该怎么办呢
      

  5.   

    select (select * from 表 order by 名称) from 表 order by 种类 (试试看看)
      

  6.   

    declare @Tmp table  --创建临时表#Tmp
    (
        ID   int      not null, --创建列ID,并且每次新增一条记录就会加1
        Name                varchar(50),   
        cate                int,   
        primary key (ID)      --定义ID为临时表#Tmp的主键      
    );
    insert into @Tmp values('1','西瓜','1' )
    insert into @Tmp values('2','西瓜','1' )
    insert into @Tmp values('3','香蕉','1' )
    insert into @Tmp values('4','香蕉','1' )
    insert into @Tmp values('5','香蕉','0' )
    insert into @Tmp values('6','苹果','0' )
    insert into @Tmp values('7','桔子','0' )
    insert into @Tmp values('8','桔子','0' )select Name from @Tmp group by Name order by sum(case when cate=1 then 1 end) descselect Name from @Tmp group by Name order by sum(case when cate=1 then 1 end) desc,count(cate) desc
      

  7.   

    declare @Tmp table  --创建临时表#Tmp
    (
        ID   int      not null, --创建列ID,并且每次新增一条记录就会加1
        Name                nvarchar(50),   
        cate                int,   
        primary key (ID)      --定义ID为临时表#Tmp的主键      
    );
    insert into @Tmp values('1',N'西瓜','1' )
    insert into @Tmp values('2',N'西瓜','1' )
    insert into @Tmp values('3',N'香蕉','1' )
    insert into @Tmp values('4',N'香蕉','1' )
    insert into @Tmp values('5',N'香蕉','0' )
    insert into @Tmp values('6',N'苹果','0' )
    insert into @Tmp values('7',N'桔子','0' )
    insert into @Tmp values('8',N'桔子','0' )select Name from @Tmp group by Name order by max(cate) desc,Nameselect Name from @Tmp group by Name order by sum(cate) desc,count(1) desc