这句SQL怎么写?

数据库是SQL2000,有一个表存的是从厂家进货信息,表名“进货表”,
有三个字段:“厂家”,“商品”,“日期”,现在我想从这个表
中查出同一厂家同一商品的最近十次进货记录。
就是说如果我从同一厂家进同一件商品不多于十次,则全部显示;
多于十次,则只显示最近十次。但不是要查某一个厂家,要查所有厂家和
所有对应的商品。
不知道该怎么写这句SQL,各位大侠帮帮忙啊!
以下各位的SQL查出来的结果总共只有十条,而我想达到的结果是每个厂家对应每个商品都有十条。
我已经提高了悬赏,现在能奖励的分数是最高的了,就拜托各位了!

第1个回答  2006-09-17
select top 10 * from 进货表 where 商品 = 条件1商品名 and 厂家 = 条件2厂家名 order by 日期 desc
其实你的表建的有问题,你应该把这个表分开,一个是进货表,另一个厂家与商品的关系表
这样写的时候你就可以把条件1或条件2变成一个子查询了
第2个回答  2006-09-14
Select * From 表名 a
where 日期<= (
Select max(日期) From (Select top 10 日期 from 表名 b where a.日期 = b.日期
group by 厂家,日期 order by 日期) c)

注:a b c是别名本回答被提问者采纳
第3个回答  2006-09-14
把所有的结果按(厂家,商品)都列出来
select * from 进货表
group by 厂家,商品
order by 日期 desc

要得到某一厂家和商品的记录:
select top 10 * from 进货表
where 厂家=xx and 商品=yy
order by 日期 desc

如果要合并以上记录就需要用到游标了
第4个回答  2006-09-14
select top(10) 厂家,商品,日期 from 进货表 where 厂家 in (select DISTINCT 厂家 from 进货表 ) group by 厂家,商品,日期 order by 日期 desc
第5个回答  2006-09-16
加一个字段作为关键字,比如“编号”

SELECT * FROM 进货表 A WHERE 编号 IN (SELECT TOP 10 编号 FROM 进货表 WHERE 厂家=A.厂家 ORDER BY 日期)
相似回答