一个数据库查询的问题
大家好,本人现在遇到数据库查询的问题,请大家帮我看看应该怎么写这条查询语句,谢谢!!!
有个表结构为
字段1 字段2
c 2007/3/10
c 2007/4/10
a 2007/4/10
a 2007/4/10
b 2007/4/10
b 2007/4/10
b 2007/4/10
d 2007/4/10
请问如何通过查询得到下面的结果
字段1 字段2
b 2007/4/10
c 2007/3/10
a 2007/4/10
d 2007/4/10
就是说要先将字段1里值个数最多的进行排列,然后根据字段2的时间的先后去掉个数相同的值,最后形成第二个表结构??
[解决办法]
Select 字段1,min(字段2) as 字段2
from 表 group by 字段1
Order by count(*) desc,min(字段2)
[解决办法]
if object_id( 'pubs..tb ') is not null
drop table tb
go
create table tb(字段1 varchar(10),字段2 datetime )
insert into tb(字段1,字段2) values( 'c ', '2007/3/10 ')
insert into tb(字段1,字段2) values( 'c ', '2007/4/10 ')
insert into tb(字段1,字段2) values( 'a ', '2007/4/10 ')
insert into tb(字段1,字段2) values( 'a ', '2007/4/10 ')
insert into tb(字段1,字段2) values( 'b ', '2007/4/10 ')
insert into tb(字段1,字段2) values( 'b ', '2007/4/10 ')
insert into tb(字段1,字段2) values( 'b ', '2007/4/10 ')
insert into tb(字段1,字段2) values( 'd ', '2007/4/10 ')
go
select 字段1 , convert(varchar(10),min(字段2),120) 字段2 from tb group by 字段1 order by count(*) desc , 字段2
drop table tb
/*
字段1 字段2
---------- ----------
b 2007-04-10
c 2007-03-10
a 2007-04-10
d 2007-04-10
(所影响的行数为 4 行)
*/