作者JYHuang (夏天到了,冷不起来了说)
看板Database
标题[SQL ] 依条件筛选出来的最大值-最小值
时间Mon Jun 13 05:27:48 2016
资料库名称: 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在同一列里显示上下班打卡时间和时间差呢?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.255.146.13
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Database/M.1465766870.A.699.html
※ 编辑: JYHuang (111.255.146.13), 06/13/2016 05:28:26
1F:推 streetbad: 试作了一下 可以用JOIN自己的方式... 06/13 11:47
2F:推 streetbad: JOIN 第一次的条件是Type = 'I' 第二次是Type = 'O' 06/13 11:51
3F:→ streetbad: 然後SELECT的部分就是第一次的MIN跟第二次的MAX 06/13 11:51
4F:→ JYHuang: 感谢,早上又试了一下。外面再包了一层SELECT GROUP 06/13 12:43
5F:→ JYHuang: 外面也是用max,min来取check in check out的值。 06/13 12:44
6F:→ JYHuang: 似乎就OK了 06/13 12:44