首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求段SQL,该怎么解决

2012-09-28 
求段SQL其中拍卖系统有A表。为产品表。列为ID,产品名称,出售数量,低价,然后有N个商品。各个产品的数量不一定。

求段SQL
其中拍卖系统有
A表。为产品表。列为ID,产品名称,出售数量,低价,然后有N个商品。各个产品的数量不一定。
B表。为拍卖纪录表,列为ID,拍卖价格,拍卖时间, ID与A表的ID是对应的。

其中。每个产品有N条拍卖纪录。但是。有效的为产品数量。
比如。产品1,这期只出售10个。但是有40个人参与拍卖,只取出价最高的10个人最有效拍卖。

B表中,存着所有的拍卖纪录。也有N条。

现需求是这样的。

我想将所有拍卖的产品的最高价,及有效最低价格(如以上例子。出价最高的第10个为最低的有效价格) 列成一张表

如。
A表:
ID 产品名称 拍卖数量 底价
1 产品2 3 10

B表
ID 姓名 出价
1 张三 20
1 李四 19
1 王五 17
1 赵六 15
1 钱七 10

我现在想要的结果是:
产品名称 底价 最高出价 有效最低出价
产品1 10 20 17

[解决办法]

SQL code
create table A(id int,产品名称 varchar(10),拍卖数量 int,底价 int)insert into Aselect 1 ,'产品2', 3, 10create table B(id int,姓名 varchar(20),出价 int)insert into B      select 1 ,'张三', 20union select 1 ,'李四', 19union select 1, '王五', 17union select 1 ,'赵六', 15union select 1 ,'钱七' ,13select * from Aselect * from Bwith T as(select a.产品名称,a.底价 ,b.出价,ROW_NUMBER() over(order by b.出价 desc)as max_p,ROW_NUMBER() over(order by b.出价 asc)as min_p from A a join B b on a.id=b.idwhere b.出价>=a.底价group by a.产品名称,a.底价,b.出价)select a.产品名称,a.底价, a.出价 as 最高出价,B.出价  as 有效最低出价 from T a,T bwhere  a.max_p=1 and b.min_p=1 and a.产品名称=b.产品名称 and B.出价>=a.底价//执行结果产品名称    底价    最高出价    有效最低出价产品2    10    20    13 

热点排行