有一个表AAA,结构如下:
类别编号 说明 排序
a aa 1
a aa2 2
a aa3 3
b bb 1
b bb2 2
b bb3 3
c cc 1
c cc2 2
c cc3 3
需要查询出来的结果是每个类别的头2条记录,按排序进行排序,结果如下:
类别编号 说明 排序
a aa 1
a aa2 2
b bb 1
b bb2 2
c cc 1
c cc2 2
谢谢各位了!只要测试通过马上给分!
类别编号 说明 排序
a aa 1
a aa2 2
a aa3 3
b bb 1
b bb2 2
b bb3 3
c cc 1
c cc2 2
c cc3 3
需要查询出来的结果是每个类别的头2条记录,按排序进行排序,结果如下:
类别编号 说明 排序
a aa 1
a aa2 2
b bb 1
b bb2 2
c cc 1
c cc2 2
谢谢各位了!只要测试通过马上给分!
解决方案 »
- 求一SQL语句!
- 怎样实现这样的SQL,搞不定,求救~,谢谢
- 安装SQL Server2008时报错
- 哈,跳到sqlserver来给分?如何使用存储过程在作业中调用本地数据远程传到远程服务器上。
- SqlServer 2008连接时 弹出异常窗口
- 四张表组成新表问题高手进来看看!!
- sql server 2000 做发布时系统提示“进程无法访问文件,因为另一个程序正在使用此文件”
- 应一些读者及网友要求:《一道褒贬不一的 SQL 考试题》原文及原题 ...
- 高分求助如下查询功能语句
- 如何实现只列出SELECT出来的头几条记录?
- 请教高手——如何把sql server 2000数据库的表结构、关系导成visio文档,马上给分,谢谢!
- 如何用sql来做统计
area cust money
--------------
A 123 20.0
A 159 20.0
A 456 25.0
A 483 30.0
A 789 40.0
A 597 50.0
B 147 10.0
B 258 20.0
B 369 25.0
B 384 30.0
希望得到的如下结果
area cust money
--------------
A 483 30.0
A 789 40.0
A 597 50.0
B 369 25.0
B 384 30.0
现有表a,想得到表a中各地区(area)的商户(cust)交易金额(money)排该地区里面前百分之50%的记录.
即要:
地区A中金额前百分之50%
地区B中金额前百分之50%
....C..............50%
....D..............50%
...................... CREATE TABLE #a (
[area] [char] (10),
[cust] [char] (10),
[money] [numeric](10, 1) NULL
)insert into #a(area,cust,money) values('A','123',20.0)
insert into #a(area,cust,money) values('A','159',20.0)
insert into #a(area,cust,money) values('A','456',25.0)
insert into #a(area,cust,money) values('A','483',30.0)
insert into #a(area,cust,money) values('A','789',40.0)
insert into #a(area,cust,money) values('A','597',50.0)
insert into #a(area,cust,money) values('B','147',10.0)
insert into #a(area,cust,money) values('B','258',20.0)
insert into #a(area,cust,money) values('B','369',25.0)
insert into #a(area,cust,money) values('B','384',30.0) select * from #a t
where cust in
(
select top 50 percent cust from #a where area=t.area order by money desc
)drop table #a//结果
area cust money
---------- ---------- ------------
A 483 30.0
A 789 40.0
A 597 50.0
B 369 25.0
B 384 30.0(所影响的行数为 5 行)
t.*
from
表 t
where
t.说明 in(select top 2 说明 from 表 where 类别编号=t.类别编号 order by 说明)
where 排序 in (
select top 2 排序 from aaa where 类别编号=a.类别编号 order by 排序
)
where (select count(*) from AAA where 类别编号 = t.类别编号 and 排序 < t.排序) < 2
--或
select * from AAA as t
where not exists(select 1 from AAA where 类别编号 = t.类别编号 and 排序 < t.排序 group by 类别编号 having count(*) > 1)