问一个SQL select的问题,请大侠不吝赐教
本帖最后由 SSS520 于 2013-06-19 10:32:09 编辑
现在有一个T表,表中有四列,分别为纳税人识别号(nsrsbh)、税种代码(szdm)、登记时间(sj)、附加信息(xx)。表格如下:
nsrsbh szdm sj xx
4511 01 2007.03 kii
4508 01 2009.01 abc
4508 01 2010.02 xyz
4509 01 2011.06 gtt
4509 03 2011.06 eet
4508 02 2012.01 frr
4509 01 2012.08 frr
4511 03 2012.06 gop
4508 01 2012.10 att
这个表是登记纳税人登记税种的表,因为纳税人有时候会改变税种的附加信息,会导致一年内有几条同一个税种附加信息(xx)的记录,现在要找出税种代码(szdm)为01的所有纳税人最新的附加信息(xx),请问要怎么写?
如上表,我要输出的结果应该如下:
nsrsbh szdm sj xx
4508 01 2012.10 att
4509 01 2012.08 frr
4511 01 2007.03 kii
开始我是这样写的:
select t.* from T where t.szdm='01' and not exists(select 1 from t j where t.nsrsbh=j.nsrsbh and t.sj<j.sj)
这样写输出的结果为:
nsrsbh szdm sj xx
4508 01 2012.10 att
4509 01 2012.08 frr
如果某个纳税人识别号没有多条记录的话就会被过滤掉,不符合我的需求,
请教一下各位大哥看看这个SQL怎么写啊?感谢!
------解决方案--------------------select t.* from T a where t.szdm='01'
and sj=(select max(sj) from T where nsrsbh=a.nsrsbh)