求一SQL
表
id, name, type
1,aa,a1
2,bb,a1
3,cc,a1
4,dd,a2
5,ee,a3
结果
id,name,type,count
1,aa,a1,3
4,dd,a2,2
就是type相同的第一条,最后一列是此type的数量合计
------解决方案--------------------select *,(select count(*) from 表名 where type=T.type) as [count]
from 表名 as T
where id in (select min(id) from 表名 where type=T.type group by type)
------解决方案--------------------create table 表名(id int, name varchar(100), type varchar(100))
insert into 表名
select 1, 'aa ', 'a1 ' union all
select 2, 'bb ', 'a1 ' union all
select 3, 'cc ', 'a1 ' union all
select 4, 'dd ', 'a2 ' union all
select 5, 'ee ', 'a2 '
select *,(select count(*) from 表名 where type=T.type) as [count]
from 表名 as T
where id in (select min(id) from 表名 where type=T.type group by type)
drop table 表名
------解决方案--------------------没有想好
随便写了个
declare @table table (id int, name char(2), type char(2))
insert into @table
select 1, 'aa ', 'a1 '
union all select 2, 'bb ', 'a1 '
union all select 3, 'cc ', 'a1 '
union all select 4, 'dd ', 'a2 '
union all select 5, '33 ', 'a2 '
create table #table (id int,name char(2),type char(2),cnt int)
insert into #table(id,name,type,cnt)
select id,name,type,cnt from @table,(select type as t1 ,count(type) as cnt from @table group by type ) as a
where type=t1
delete from #table where exists(select 1 from #table as t where #table.type=t.type and #table.id> t.id)
select * from #table
drop table #table
------解决方案--------------------建议把id in修改成id=,这样效率能高一点
select *,(select count(*) from 表名 where type=T.type) as [count]
from 表名 as T
where id=(select min(id) from 表名 where type=T.type group by type)