[SQL ] 依条件筛选出来的最大值-最小值

楼主: JYHuang (夏天到了,冷不起来了说)   2016-06-13 05:27:48
数据库名称: SQL Server
数据库版本: 2012
内容/问题描述:
目前有一TABLE checktime 纪录刷卡时间
主要字段有
type 上班下班的区别('I','O')
chktime 纪录刷卡时间
我想在同一列中同时显示上班跟下班的打卡时间和时间差
不过在GROUP条件中如果不用Group by type的话,
无法在SELECT做为条件去判断是上班打卡或下班打卡
可是GROUP的话,又无法做在同一列中
要怎么以(下方想到的约略写法)
SELECT check_in,check_out,worktime
FROM (
SELECT
(CASE type WHEN 'I' then MIN(chktime) END) check_in,
(CASE type WHEN 'O' then MAX(chktime) END) check_out
DATEDIF(mi,blablabla,blablabla)
FROM checktime
GROUP BY type,CONVERT(char(10), chktime, 121)
) as chktime
把不同列的checktime在同一列里显示上下班打卡时间和时间差呢?
作者: streetbad (翊)   2016-06-13 11:47:00
试作了一下 可以用JOIN自己的方式...JOIN 第一次的条件是Type = 'I' 第二次是Type = 'O'然后SELECT的部分就是第一次的MIN跟第二次的MAX
楼主: JYHuang (夏天到了,冷不起来了说)   2016-06-13 12:43:00
感谢,早上又试了一下。外面再包了一层SELECT GROUP外面也是用max,min来取check in check out的值。似乎就OK了

Links booklink

Contact Us: admin [ a t ] ucptt.com