--1、相同的零件编号有多条记录,单价相同,要求返回的是日期最大的
--2、相同的零件编号有多条记录,单价不同,都要求返回create table #t1 ( 
供货商 varchar (255) null , 
零件编号 varchar (255) null , 
物料名称 varchar (255) null , 
单位 varchar (255) null , 
单价 varchar (255) null , 
日期 smalldatetime  null , 
订单号 varchar (255) null )insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('a厂','117k201200112d','无柄大身','个',1.7,'2005-08-20 00:00:00','xxj-057174')
insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('a厂','117k201200112d','无柄大身','个',1.7,'2005-08-21 00:00:00','xxj-057176')
insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('a厂','126a01200102','无柄大身','个',1.7,'2005-06-08 00:00:00','xxj-055149')
insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('f厂','126a01200102','无柄大身','个',1.8,'2005-06-08 00:00:00','xxj-055149')
insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('b厂','126b01200102','无柄大身','个',1.7,'2005-07-22 00:00:00','xxj-056671')
insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('c厂','900022061104','橡筋扣','个',0.2,'2005-11-01 00:00:00','lw-0510350')
insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('d厂','900022230004','灰色橡筋扣','个',0.2,'2005-11-05 00:00:00','lw-0511112')select identity(int,1,1) as autoid,*
into #t2
from #t1select a.供货商,a.零件编号,a.物料名称,a.单位,a.单价,a.日期,a.订单号
from #t2 a inner join (
select 零件编号,单价,max(日期) as 日期
from #t2
group by 零件编号,单价) b on a.零件编号=b.零件编号 and a.单价=b.单价 and a.日期=b.日期
order by a.autoiddrop table #t1,#t2
--执行结果
/*
供货商 零件编号 物料名称 单位 单价 日期 订单号
----------------------------------------------------------------------------------------------------------------
a厂 117k201200112d 无柄大身 个 1.7 2005-08-21 00:00:00 xxj-057176
a厂 126a01200102 无柄大身 个 1.7 2005-06-08 00:00:00 xxj-055149
f厂 126a01200102 无柄大身 个 1.8 2005-06-08 00:00:00 xxj-055149
b厂 126b01200102 无柄大身 个 1.7 2005-07-22 00:00:00 xxj-056671
c厂 900022061104 橡筋扣 个 0.2 2005-11-01 00:00:00 lw-0510350
d厂 900022230004 灰色橡筋扣 个 0.2 2005-11-05 00:00:00 lw-0511112*/

解决方案 »

  1.   

    select 供货商,零件编号,物料名称,单位,单价,日期=max(日期),订单号=max(订单号)
    from bom1
    group by 供货商,零件编号,物料名称,单位,单价
      

  2.   

    try:
    create table #t1 ( 
    供货商 varchar (255) null , 
    零件编号 varchar (255) null , 
    物料名称 varchar (255) null , 
    单位 varchar (255) null , 
    单价 varchar (255) null , 
    日期 smalldatetime  null , 
    订单号 varchar (255) null )insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('a厂','117k201200112d','无柄大身','个',1.7,'2005-08-20 00:00:00','xxj-057174')
    insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('a厂','117k201200112d','无柄大身','个',1.7,'2005-08-21 00:00:00','xxj-057176')
    insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('a厂','126a01200102','无柄大身','个',1.7,'2005-06-08 00:00:00','xxj-055149')
    insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('f厂','126a01200102','无柄大身','个',1.8,'2005-06-08 00:00:00','xxj-055149')
    insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('b厂','126b01200102','无柄大身','个',1.7,'2005-07-22 00:00:00','xxj-056671')
    insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('c厂','900022061104','橡筋扣','个',0.2,'2005-11-01 00:00:00','lw-0510350')
    insert into #t1(供货商,零件编号,物料名称,单位,单价,日期,订单号) values ('d厂','900022230004','灰色橡筋扣','个',0.2,'2005-11-05 00:00:00','lw-0511112')select * from #t1select T.* 
    from #t1 T 
    where exists (select 1 from 
                  (select 零件编号,单价,max(日期) as 日期 from #t1 group by 零件编号,单价) T1 where T.零件编号=T1.零件编号 and T.单价=T1.单价 and datediff(dd,T.日期,T1.日期)=0)