(无列名) hh tjbh dwmc
2012-01-06 00:00:00.000 100003 0000 盘点录入
2011-12-27 00:00:00.000 100008 期初录入
2011-12-30 00:00:00.000 100011 kh0001 山东康惠医药有限公司
2012-05-17 00:00:00.000 100011 SDRZ001 山东瑞中医药有限公司
2012-01-06 00:00:00.000 100011 0000 盘点录入
2011-12-27 00:00:00.000 100011 期初录入
2012-02-11 00:00:00.000 100015 ytlhzs0001 烟台联合众生医药有限公司(代销)(王巍)
2012-01-16 00:00:00.000 100015 AHS004 安徽省华仁医药经营有限公司
2012-01-21 00:00:00.000 100015 10054 河北瑞健盛康医药有限公司
2012-01-21 00:00:00.000 100015 0000 盘点录入
2011-12-27 00:00:00.000 100015 期初录入
我的语句如下,我已经指定max了,为什么后面还出来那么多别的日期的。
SELECT MAX(kdrq),hh,tjbh,dwmc FROM rkdzk GROUP BY hh,tjbh,dwmc ORDER BY hh 最后达到如下要求:只保留一条最大日期下的数据
(无列名) hh tjbh dwmc
2012-01-06 00:00:00.000 100003 0000 盘点录入
2011-12-27 00:00:00.000 100008 期初录入
2012-05-17 00:00:00.000 100011 SDRZ001 山东瑞中医药有限公司
2012-02-11 00:00:00.000 100015 ytlhzs0001 烟台联合众生医药有限公司(代销)(王巍)另:如果最大日期的 dwmc 是盘点录入,就取第二日期的数据。

解决方案 »

  1.   


    select kdrq,hh,tjbh,dwmc
    from rkdzk t1
    where kdrq=(select max(kdrq) from rkdzk t2 
    where t1.hh=t2.hh and t1.dwmc=t2.dwmc)
    --where t1.hh=t2.hh and t1.dwmc=t2.dwmc此处有几个条件自已去关联
      

  2.   

    因为你是按这三个分组的啊
    hh,tjbh,dwmc,按你这样的话,这三个有多少,就会分多少组了。
    分组不对!
      

  3.   


    SELECT 
         kdrq,hh,tjbh,dwmc 
    FROM 
         rkdzk A
    WHERE  
         kdrq=(SELECT MAX(kdrq) FROM rkdzk B
                WHERE A.hh=B.hh)
    --或者:
    SELECT 
         kdrq,hh,tjbh,dwmc 
    FROM 
         rkdzk A
    WHERE 
        NOT EXISTS(
           SELECT 1 FROM rkdzk B 
               WHERE A.hh=B.hh
                    AND A.kdrq<B.kdrq
         )
    --我需要给楼主说一句,你在非技术版的帖子我没半点瞧不起你的意思,更没半点侮辱你的意思,我也没说一句攻击你的话,我引用别人的只是觉得那会说的不尊重人。那猴子是笑么?分明就是觉得很无奈,明白吗?