日期:2014-05-18  浏览次数:20419 次

取最大日期的值的问题?~在线等
(无列名) 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了,为什么后面还出来那么多别的日期的。
SQL code
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 是盘点录入,就取第二日期的数据。


------解决方案--------------------
SQL code

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此处有几个条件自已去关联

------解决方案--------------------
SQL code

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
     )


--我需要给楼主说一句,你在非技术版的帖子我没半点瞧不起你的意思,更没半点侮辱你的意思,我也没说一句攻击你的话,我引用别人的只是觉得那会说的不尊重人。那猴子是笑么?分明就是觉得很无奈,明白吗?