当前位置: 代码迷 >> Sql Server >> SQL语句,比较麻烦
  详细解决方案

SQL语句,比较麻烦

热度:79   发布时间:2016-04-27 15:07:30.0
求一个SQL语句,比较麻烦
有这样的一个表格

单位 金额 分类
a 10 1
a 8 2
b 1 1
c 1 2

我要得到每个单位分类值最大的记录,结果如下所示

单位 金额 分类
a 8 2
b 1 1
c 1 2

请问这个sql该怎么写

------解决方案--------------------
select a.* from tb where 分类 = (select max(分类) from tb where 单位=a.单位)
------解决方案--------------------
SQL code
--按记录顺序取第一条select a.* from tb a where 分类=(select top 1 分类 from tb where where 单位=a.单位)--取最小select * from @test a where 分类=(select min(分类) from tb where where 单位=a.单位)--取最大select * from @test a where 分类=(select max(分类) from tb where where 单位=a.单位)--随机取select * from @test a where 分类=(select top 1 分类 fromtb where where 单位=a.单位 order by newid())
------解决方案--------------------
SQL code
create table tb(单位 varchar(10),金额 int,分类 int)insert into tb values('a',     10,  1 )insert into tb values('a',     8 ,  2 )insert into tb values('b',     1 ,  1 )insert into tb values('c',     1 ,  2 )go--按记录顺序取第一条select a.* from tb a where 分类 = (select top 1 分类 from tb where 单位=a.单位)/*单位         金额          分类          ---------- ----------- ----------- a          10          1b          1           1c          1           2*/--取最小select a.* from tb a where 分类=(select min(分类) from tb where 单位=a.单位)/*单位         金额          分类          ---------- ----------- ----------- a          10          1b          1           1c          1           2*/--取最大select a.* from tb a where 分类=(select max(分类) from tb where 单位=a.单位)/*单位         金额          分类          ---------- ----------- ----------- c          1           2b          1           1a          8           2*/--随机取select a.* from tb a where 分类=(select top 1 分类 from tb where 单位=a.单位 order by newid())/*单位         金额          分类          ---------- ----------- ----------- a          8           2b          1           1c          1           2(所影响的行数为 3 行)*/drop table tb
  相关解决方案