SQL关联查询问题

条件:销售表t1有字段:销售日期date、产品编码number、销售价格price
求:每个产品在它最近一次销售时间的价格?
例表t1:
id date number price
1 2008-08-01 A 1.1
2 2008-08-02 A 1.2
3 2008-08-03 B 1.3
4 2008-08-04 B 1.4
5 2008-08-05 C 1.5
6 2008-08-06 C 1.6

查询结果应为:
id date number price
2 2008-08-02 A 1.2
4 2008-08-04 B 1.4
6 2008-08-06 C 1.6

注:date为日期型
请教各位应该怎样写查询语句呢?
备注:可能是我这个例子举的不好
什么时间以什么价格销售什么产品的顺序都是不一定的
然后求每个产品最后一次的销售价格,这个能解决吗?

select id,date,number,price --所要查询的数据
from t1
where number in (select number --NUMBER查询条件,按NUMBER分组
from t1
group by number)
and date in (select max(date) --查询按NUMBER分组,每个NUMBER最大的
from t1 DATE值。
group by number)
两个限定条件,直接就可以查询你所要求的数据,我已自己测试过,完全通过。我把两个限定条件分开写,就是为了让你看得更明白一些。

有什么不明白的可以问我,谢谢。

按你的要求我给你改了下:
select id,number,date,price
from t1
where (number,date) in (select number,max(date)
from t1
group by number

不明白再给我发消息
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-15
select * from t1 where [date] in (select max([date]) from t1 group by number)
第2个回答  2008-08-15
select * from t1 where (Cast([date] as varchar(50)) + '_' + Cast([id] as varchar(50))) in
(
select (Cast([date] as varchar(50)) + '_' + Cast([id] as varchar(50))) from t1
group by [number]
)
第3个回答  2008-08-15
select id,max(date) date,number, price from t1
group by id,number ,price

最近一次销售时间也就是查找最大的日期的商品的明细
第4个回答  2008-08-16
select * from t1 group by number having max(date) order by id
相似回答