我有下表:
date1 date2 sc cash date
"2010-09-20" "2010-09-21" 202 300 "2010-03-01"
"2010-09-20" "2010-09-21" 202 600 "2010-08-01"
"2010-09-20" "2010-09-21" 202 670 "2010-08-20"
"2010-09-20" "2010-09-21" 202 710 "2010-09-01"
"2010-09-20" "2010-09-21" 202 870 "2010-09-21"
"2010-09-21" "2010-09-22" 199 300 "2010-03-01"
"2010-09-21" "2010-09-22" 199 600 "2010-08-01"
"2010-09-21" "2010-09-22" 199 670 "2010-08-20"
"2010-09-21" "2010-09-22" 199 710 "2010-09-01"
"2010-09-21" "2010-09-22" 199 870 "2010-09-21"
按(date1,date2)
和(cash,date)
进行分组的内容是date = max(date <= date1)
date1 date2 sc cash date
"2010-09-20" "2010-09-21" 202 870 "2010-09-21"
"2010-09-21" "2010-09-22" 199 870 "2010-09-21"
答案 0 :(得分:1)
你需要的是使用 HAVING 子句...我只是假设你在每一行都有一个id ..(如果你没有,你将不得不修改我的查询,但它会更难= D)
SELECT date1,date2,sc,cash,date
FROM mytable
WHERE id IN (SELECT id
FROM mytable GROUP BY date1,date2
HAVING max(date)>=date1)
我在Postgresql中测试过它并且工作正常。我还没能在MySql中测试它
祝你好运