SqL 语句问题:有点难度?!(40分)

  • 主题发起人 主题发起人 hujunx
  • 开始时间 开始时间
H

hujunx

Unregistered / Unconfirmed
GUEST, unregistred user!
SQL server 有个数据表 myTable
A B
-----------
1 2
1 7
2 2
3 1
3 5
3 9
-------------
要求查询出以下条件的数据
1. A 只有一条记录时。
2. 当 A 有1条以上记录时,取B列 B <= v 值的记录 ,
另外取 B <= b 值且最近 b 的记录。
然后包括这两条记录之间的所有记录。
结果可能只有一条。

也可以理解为,表按 A,B排序,其中B为倒序。
在 b <= v 的区间内,取 B<= v 到 ( B <= b 且 b - B 的值最小)之间的所有记录

例:b = 3 , v = 6 时的结果
A B
-----------
1 2
2 2
3 1
3 5
-------------

 
应该要写一个存贮过程吧,
创建一个临时表了。
 
不是很明白,不知是不是这个意思?
select A,B form table1 where B<=:v and B>(select max(B) from table1 where B<=:b)
order by a asc,b desc
 
delphing的答案不正确,因为首先要分组。
 
hujunx,你看下面代码行不行,将tt理解成mytable好了,另外你给出的结果好像不是按b倒排序
select a,b from tt where a in(select a from tt group by a having count(a)=1)
union all
select a,b from tt where a in(select a from tt group by a having count(a)>1)
and b>=(select max(p.b) from tt p where p.b<=3 and p.a=tt.a)
and b<=6
order by a asc,b desc;
 
对酒当歌的答案没有测试。
 
后退
顶部