假如有一个表的结构和数据是:
CODE TRAN_DATE AMOUNT
TTT 2010-10-12 1000
TTT 2010-12-31 3000
CCC 2010-07-01 500
CCC 2011-01-31 4000
我期望能查出来的值是
CCC 2011-01-31 4000
TTT 2010-12-31 3000
这种值, 我的SQL应该怎么写,有一条SQL能满足我的需求么?
------解决方案--------------------
select * from tt a whre not exists(select 1 from tt where a.CODE=cdoe and a.TRAN_DATE<TRAN_DATE)
------解决方案--------------------
- SQL code
select * from table A where not exists( select 1 from table B where a.CODE = B.CODE and A.TRAN_DATE < B.TRAN_DATE ) select A.* from table A, (select CODE, max(TRAN_DATE) as TRAN_DATE from table group by CODE) B where A.CODE = B.CODE and A.TRAN_DATE = B.TRAN_DATE
------解决方案--------------------
加时间段:
- SQL code
select A.* from table A, (select CODE, max(TRAN_DATE) as TRAN_DATE from table where TRAN_DATE > ? and TRAN_DATE < ? group by CODE ) B where A.CODE = B.CODE and A.TRAN_DATE = B.TRAN_DATE