日期:2014-05-16  浏览次数:20575 次

如何提取一批购水记录中每位顾客的最后购水记录数据
现有一表,里面包含100名顾客多次的购买记录,现需要提取每位顾客最后一次购买记录的详情

表格字段如下:
顾客编号  顾客姓名   顾客住址  购买水量  购买日期


现需要生成包含 顾客编号  顾客姓名   顾客住址  购买水量  购买日期 等字段的每位顾客最后的购买记录量

请提供一下SQL语句,谢谢大家。

------解决方案--------------------
select 购买数量 from tb t where not exists(select 1 from tb where 顾客姓名=t.顾客姓名 and  购买日期>t. 购买日期)

------解决方案--------------------
select 购买数量 from tb t where 购买日期=(select max(购买日期) from tb where 顾客姓名=t.顾客姓名)

------解决方案--------------------

-- 方法1
select 顾客编号,顾客姓名,顾客住址,购买水量,购买日期
from
(select row_number() over(partition by 顾客编号 order by 购买日期 desc) 'rn',*
 from [表名]) t
where rn=1

-- 方法2
select a.顾客编号,a.顾客姓名,a.顾客住址,a.购买水量,a.购买日期
from [表名] a
inner join
(select 顾客编号,max(购买日期) '购买日期'
 from [表名]
 group by 顾客编号) b on a.顾客编号=b.顾客编号 and a.购买日期=b.购买日期