这句SQL怎么写?

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

Select * From 表名 a
where 日期<= (
Select max(日期) From (Select top 10 日期 from 表名 b where a.日期 = b.日期
group by 厂家,日期 order by 日期) c)

注:a b c是别名

select top(10) 厂家,商品,日期 from 进货表 group by 厂家,商品,日期 order by 日期 desc

select top(10) 厂家,商品,日期 from 进货表 where 厂家 in (select DISTINCT 厂家 from 进货表 ) group by 厂家,商品,日期 order by 日期 desc

把所有的结果按(厂家,商品)都列出来
select * from 进货表
group by 厂家,商品
order by 日期 desc

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

如果要合并以上记录就需要用到游标了

加一个字段作为关键字,比如“编号”

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

select top 10 * from 进货表 where 商品 = 条件1商品名 and 厂家 = 条件2厂家名 order by 日期 desc
其实你的表建的有问题,你应该把这个表分开,一个是进货表,另一个厂家与商品的关系表
这样写的时候你就可以把条件1或条件2变成一个子查询了