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

怎么过滤出每一个商品的在不同购进单位单据编号最大的那条记录

2012-04-27 
如何过滤出每一个商品的在不同购进单位单据编号最大的那条记录?如何过滤出每一个商品的每一个购进单位的,

如何过滤出每一个商品的在不同购进单位单据编号最大的那条记录?
如何过滤出每一个商品的每一个购进单位的,单据编号最大的那条记录?
(一个商品可能在多个单位购进,自取最近的一条)

表结构如下
(举少量数据为例)

spbh dwbh rq
spid1 A 2012-04-01
spid1 A 2012-03-01
spid1 B 2012-03-01
spid2 A 2012-04-01
spid2 B 2012-03-01
spid2 B 2012-02-01
spid3 A 2012-03-01
spid3 A 2012-02-01
......
---------------------------------------

想得到这样的结果

spbh dwbh rq
spid1 A 2012-04-01
spid1 B 2012-03-01
spid2 A 2012-04-01
spid2 B 2012-03-01
spid3 A 2012-03-01





[解决办法]

SQL code
select spbh ,dwbh, max(rq)rq from tb group by spbh,dwbh
[解决办法]
SQL code
--> 测试数据:[tbl]if object_id('[tbl]') is not null drop table [tbl]create table [tbl]([spbh] varchar(5),[dwbh] varchar(1),[rq] datetime)insert [tbl]select 'spid1','A','2012-04-01' union allselect 'spid1','A','2012-03-01' union allselect 'spid1','B','2012-03-01' union allselect 'spid2','A','2012-04-01' union allselect 'spid2','B','2012-03-01' union allselect 'spid2','B','2012-02-01' union allselect 'spid3','A','2012-03-01' union allselect 'spid3','A','2012-02-01'--2005以上select [spbh],[dwbh],[rq] from(select row=ROW_NUMBER()over(partition by [spbh],[dwbh] order by [rq] desc),    * from tbl)awhere row=1--2000--1select * from tbl a    where [rq]=(select MAX([rq]) from tbl b where a.spbh=b.spbh and a.dwbh=b.dwbh)    order by [spbh],[dwbh]--2select spbh ,dwbh, max(rq)rq from tbl group by spbh,dwbh--情况简单选择2就好了,复杂了使用1或者2005以上版本使用row_number/*spbh    dwbh    rqspid1    A    2012-04-01 00:00:00.000spid1    B    2012-03-01 00:00:00.000spid2    A    2012-04-01 00:00:00.000spid2    B    2012-03-01 00:00:00.000spid3    A    2012-03-01 00:00:00.000*/ 

热点排行