[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