日期:2014-05-17  浏览次数:20613 次

求一分组取最大值的疑难语句
本帖最后由 zhongguohld 于 2013-08-14 11:48:30 编辑
原始表
vender_id vender_name ITEM cx_from_date cx_to_date price
WH001 微软 55-001 2013/1/1 2013/3/30 0.5
WH001 微软 55-001 2013/4/1 2013/5/31 0.6
WH001 微软 55-001 2013/6/1 2013/10/31 0.5
WH002 IBM 55-002 2013/1/1 2013/3/30 1
WH002 IBM 55-002 2013/4/1 2013/6/30 1.1
WH002 IBM 55-002 2013/7/1 2013/10/31 1.2
WH001 微软 55-002 2012/1/1 2012/3/30 2
WH001 微软 55-002 2012/4/1 2012/6/30 2.1
WH001 微软 55-002 2012/7/1 2012/12/31 2
WH001 微软 55-002 2013/1/1 2013/3/30 2.2
WH001 微软 55-002 2013/4/1 2013/6/30 2.3
WH001 微软 55-002 2013/7/1 2013/10/31 2.5

结果表
WH001 微软 55-001 2013/6/1 2013/10/31 0.5
WH002 IBM 55-002 2013/7/1 2013/10/31 1.2
WH001 微软 55-002 2013/7/1 2013/10/31 2.5

如何实现按照物料分组取生效日期最大值的所有记录。
分组

------解决方案--------------------
----------------------------
-- Author  :DBA_Huangzj(發糞塗牆)
-- Date    :2013-08-14 11:50:32
-- Version:
--      Microsoft SQL Server 2014 (CTP1) - 11.0.9120.5 (X64) 
-- Jun 10 2013 20:09:10 
-- Copyright (c) Microsoft Corporation
-- Enterprise Evaluation Edition (64-bit) on Windows NT 6.2 <X64> (Build 9200: ) (Hypervisor)
--
----------------------------
--> 测试数据:[huang]
if object_id('[huang]') is not null drop table [huang]
go 
create table [huang]([vender_id] varchar(5),[vender_name] varchar(4),[ITEM] varchar(6),[cx_from_date] datetime,[cx_to_date] datetime,[price] numeric(2,1))
insert [huang]
select 'WH001','微软','55-001','2013/1/1','2013/3/30',0.5 union all
select 'WH001','微软','55-001','2013/4/1','2013/5/31',0.6 union all
select 'WH001','微软','55-001','2013/6/1','2013/10/31',0.5 union all
select 'WH002','IBM','55-002','2013/1/1','2013/3/30',1 union all
select 'WH002','IBM','55-002','2013/4/1','2013/6/30',1.1 union all
select 'WH002','IBM','55-002','2013/7/1','2013/10/31',1.2 union all