数据库表A存有如下类型的字段:
Time biaozhi 姓名
2010-07-08 12:34:56 1 s
2010-07-08 16:17:56 1 s
2010-07-09 11:13:13 2 s
2010-07-09 19:13:13 2 s
2010-07-10 11:13:13 2 s
2010-07-11 11:13:13 1 s
2010-07-12 14:13:13 1 s
biaozhi为一个标志字段。当标志从1变到2时,该Time字段的值为开始时间,当标志从2变到1时,Time字段的值为结束时间。
期望的查询结果为:
开始时间 结束时间 姓名
2010-07-09 11:13:13 2010-07-11 11:13:13 s请问大侠,这该如何实现?是在SQL语句里实现呢,还是对查询的结果进行过滤判断呀?就是希望把结果显示到stringgrid上。
各位大侠!指教!!!
Time biaozhi 姓名
2010-07-08 12:34:56 1 s
2010-07-08 16:17:56 1 s
2010-07-09 11:13:13 2 s
2010-07-09 19:13:13 2 s
2010-07-10 11:13:13 2 s
2010-07-11 11:13:13 1 s
2010-07-12 14:13:13 1 s
biaozhi为一个标志字段。当标志从1变到2时,该Time字段的值为开始时间,当标志从2变到1时,Time字段的值为结束时间。
期望的查询结果为:
开始时间 结束时间 姓名
2010-07-09 11:13:13 2010-07-11 11:13:13 s请问大侠,这该如何实现?是在SQL语句里实现呢,还是对查询的结果进行过滤判断呀?就是希望把结果显示到stringgrid上。
各位大侠!指教!!!
sqlserver中有 case...when语法,看下帮助
access中 有 好像是iif语法
如果是这样的话,感觉SQL语句实现起来比较困难,即使能实现,执行效率可能也比较低,个人建议有2种方案:
1. 提取到Delphi中,然后一笔一笔的判断
2. 在数据库中建个存储过程来处理,可能需要用到游标
Rgight Join
Select b.Time as 开始时间,b.S From Table b where b.biaozhi=2
where a.s=b.s
左连接 Left Join 就是左邊的內容可以為空了
右连接 Rgight Join 就是右邊的內容可以為空
完全连接 Inner Join 就是兩邊的都可以為空
f_getMaxTime(姓名当参数)和f_GetMinTimeSELECT f_getMintime(姓名) AS 开始时间,f_getMAXtime(姓名) AS 结束时间,姓名 FROM 表
GROUP BY 姓名