sql语句 获取 最大时间 最小时间 group by 筛选
如下:检索期间例如:2014/10/1---2014/10/10,一个人一天可能有多条数据,只取那一天时间点最小和最大的:这是从两个表IOData和CardData里面取...
如下:检索期间例如:
2014/10/1---2014/10/10 ,一个人一天可能有多条数据,只取那一天时间点最小和最大的:
这是从两个表IOData和CardData 里面取出来的数据。
0003 E0CD9E 张1 2014/10/9 08:25:15 02-5
0003 E0CD9E 张1 2014/10/9 09:31:32 02-5
0003 E0CD9E 张1 2014/10/9 09:32:48 02-5
0003 E0CD9E 张1 2014/10/9 11:31:27 02-5
0005 E515E7 李2 2014/10/8 13:10:10 02-5
0005 E515E7 李2 2014/10/8 18:44:43 02-5
0005 E515E7 李2 2014/10/8 20:41:36 02-5
还有一个条件没有满足,最大最小时间,满足后应该是这样的:
0003 E0CD9E 张1 2014/10/9 08:25:15 02-5
0003 E0CD9E 张1 2014/10/9 11:31:27 02-5
0005 E515E7 李2 2014/10/8 13:10:10 02-5
0005 E515E7 李2 2014/10/8 20:41:36 02-5
目前只做到,检索期间的条件,
commondSql = "SELECT D.CardNo,C.CardID,D.HolderName,D.IODate,D.IOTime,D.IOGateNo from IOData D,CardData C "
commondSql = commondSql + "WHERE D.IODate >= #" + MniDate + "# AND D.IODate<=#" + MaxDate + "#"
commondSql = commondSql + "and D.CardNo=C.CardNo ORDER BY D.CardNo,D.IODate,D.IOTime ASC"
以前问过,没捣鼓出来。
谢谢! 展开
2014/10/1---2014/10/10 ,一个人一天可能有多条数据,只取那一天时间点最小和最大的:
这是从两个表IOData和CardData 里面取出来的数据。
0003 E0CD9E 张1 2014/10/9 08:25:15 02-5
0003 E0CD9E 张1 2014/10/9 09:31:32 02-5
0003 E0CD9E 张1 2014/10/9 09:32:48 02-5
0003 E0CD9E 张1 2014/10/9 11:31:27 02-5
0005 E515E7 李2 2014/10/8 13:10:10 02-5
0005 E515E7 李2 2014/10/8 18:44:43 02-5
0005 E515E7 李2 2014/10/8 20:41:36 02-5
还有一个条件没有满足,最大最小时间,满足后应该是这样的:
0003 E0CD9E 张1 2014/10/9 08:25:15 02-5
0003 E0CD9E 张1 2014/10/9 11:31:27 02-5
0005 E515E7 李2 2014/10/8 13:10:10 02-5
0005 E515E7 李2 2014/10/8 20:41:36 02-5
目前只做到,检索期间的条件,
commondSql = "SELECT D.CardNo,C.CardID,D.HolderName,D.IODate,D.IOTime,D.IOGateNo from IOData D,CardData C "
commondSql = commondSql + "WHERE D.IODate >= #" + MniDate + "# AND D.IODate<=#" + MaxDate + "#"
commondSql = commondSql + "and D.CardNo=C.CardNo ORDER BY D.CardNo,D.IODate,D.IOTime ASC"
以前问过,没捣鼓出来。
谢谢! 展开
1个回答
展开全部
我看了一下 你的那个表 当holderName一样时,只有时间会不一样对不对。我觉得可以这样写
SELECT D.CardNo,C.CardID,D.HolderName,D.IODate,min(D.IOTime) as IOTime,D.IOGateNo
from IOData D,CardData C
where D.CardNo=C.CardNo
group by D.CardNo,C.CardID,D.HolderName,D.IODate,D.IOGateNo
union all
SELECT D.CardNo,C.CardID,D.HolderName,D.IODate,max(D.IOTime) as IOTime,D.IOGateNo
from IOData D,CardData C
where D.CardNo=C.CardNo
group by D.CardNo,C.CardID,D.HolderName,D.IODate,D.IOGateNo
更多追问追答
追问
我研究了一下,觉得写的很对,拿到程序运行了一下,报错SQL语句错误,貌似不能识别union all .我用的vb.net 数据库是mysql.mysql可不好使了。。。
追答
报的什么错 弄出来看看呗
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询