在ACCESS中有一个表出口货号              货号            货物名称         消耗           变更次数8101-01-1198 0102-58-0165-0 警察狗手指偶// 0.033673469       48
8101-01-1198 0102-58-0165-0 警察狗手指偶// 0.033673469       49
8101-01-1198 0103-03-0051-0 警察狗手指偶// 0.057142857 49
8101-01-1198 0103-03-0051-0 警察狗手指偶// 0.057142857 50
8101-01-1198 0103-03-0051-0 警察狗手指偶// 0.057142857 45类似这样的数据。判断前面四个条件。四个条件一样的取  然后变更次数最大的一个结果是8101-01-1198 0102-58-0165-0 警察狗手指偶// 0.033673469       49
8101-01-1198 0103-03-0051-0 警察狗手指偶// 0.057142857 50

解决方案 »

  1.   

    select *
    from tb t
    where 变更次数=(select max(变更次数)
                   from tb
                   where 出口货号=t.出口货号 and 货号=t.货号 and
                   货物名称=t.货物名称 and 消耗=t.消耗)
      

  2.   

    -->Generate test data...
     
    if not object_id('tb') is null
    drop table tb
    Go
    Create table tb([出口货号] nvarchar(12),[货号] nvarchar(14),[货物名称] nvarchar(8),[消耗] decimal(18,9),[变更次数] int)
    Insert tb
    select N'8101-01-1198',N'0102-58-0165-0',N'警察狗手指偶//',0.033673469,48 union all
    select N'8101-01-1198',N'0102-58-0165-0',N'警察狗手指偶//',0.033673469,49 union all
    select N'8101-01-1198',N'0103-03-0051-0',N'警察狗手指偶//',0.057142857,49 union all
    select N'8101-01-1198',N'0103-03-0051-0',N'警察狗手指偶//',0.057142857,50 union all
    select N'8101-01-1198',N'0103-03-0051-0',N'警察狗手指偶//',0.057142857,45
    Go
    select *
    from tb t
    where 变更次数=(select max(变更次数)
                   from tb
                   where 出口货号=t.出口货号 and 货号=t.货号 and
                   货物名称=t.货物名称 and 消耗=t.消耗)
    /*
    出口货号         货号             货物名称     消耗                                      变更次数
    ------------ -------------- -------- --------------------------------------- -----------
    8101-01-1198 0103-03-0051-0 警察狗手指偶// 0.057142857                             50
    8101-01-1198 0102-58-0165-0 警察狗手指偶// 0.033673469                             49(2 行受影响)*/
      

  3.   

    -->Generate test data...
     
    if not object_id('tb') is null
        drop table tb
    Go
    Create table tb([出口货号] nvarchar(12),[货号] nvarchar(14),[货物名称] nvarchar(8),[消耗] decimal(18,9),[变更次数] int)
    Insert tb
    select N'8101-01-1198',N'0102-58-0165-0',N'警察狗手指偶//',0.033673469,48 union all
    select N'8101-01-1198',N'0102-58-0165-0',N'警察狗手指偶//',0.033673469,49 union all
    select N'8101-01-1198',N'0103-03-0051-0',N'警察狗手指偶//',0.057142857,49 union all
    select N'8101-01-1198',N'0103-03-0051-0',N'警察狗手指偶//',0.057142857,50 union all
    select N'8101-01-1198',N'0103-03-0051-0',N'警察狗手指偶//',0.057142857,45
    Goselect 出口货号,货号,货物名称,消耗,max(变更次数) 变更次数
    from tb
    group by 出口货号,货号,货物名称,消耗
    /*
    出口货号         货号             货物名称     消耗                                      变更次数
    ------------ -------------- -------- --------------------------------------- -----------
    8101-01-1198 0103-03-0051-0 警察狗手指偶// 0.057142857                             50
    8101-01-1198 0102-58-0165-0 警察狗手指偶// 0.033673469                             49(2 行受影响)
      

  4.   

    这样也可以达到你要的结果:
    select 出口货号 货号 货物名称 消耗 max(变更次数)
    from 表名
    group by 出口货号 货号 货物名称 消耗
    having count(*) >= 2  
      

  5.   

    各位老大。我在ACC查询这样自动生成的查询语句不知道对不对?SELECT DISTINCTROW bom.出口货号, bom.货号, bom.货物名称, bom.消耗, Max(bom.变更次数) AS [变更次数 之 最大值]
    FROM bom
    GROUP BY bom.出口货号, bom.货号, bom.货物名称, bom.消耗;我大概看了一下MS是对的