2010-09-28 43 views
0

我有如下表:mysql的分组问题

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

什么数据类型是您的日期字段?你没有使用VARCHAR吗? – 2010-09-28 12:15:00

回答

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进行了测试和工程fine.Sorry,我一直无法测试它在MySQL

好运

+0

非常感谢你的男人,它有点相同的想法:) – 3ashmawy 2010-09-29 12:56:13