[SQL ] 依條件篩選出來的最大值-最小值

看板Database (資料庫)作者 (夏天到了,冷不起來了說)時間8年前 (2016/06/13 05:27), 8年前編輯推噓2(204)
留言6則, 2人參與, 最新討論串1/1
資料庫名稱: 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://www.ptt.cc/bbs/Database/M.1465766870.A.699.html ※ 編輯: JYHuang (111.255.146.13), 06/13/2016 05:28:26

06/13 11:47, , 1F
試作了一下 可以用JOIN自己的方式...
06/13 11:47, 1F

06/13 11:51, , 2F
JOIN 第一次的條件是Type = 'I' 第二次是Type = 'O'
06/13 11:51, 2F

06/13 11:51, , 3F
然後SELECT的部分就是第一次的MIN跟第二次的MAX
06/13 11:51, 3F

06/13 12:43, , 4F
感謝,早上又試了一下。外面再包了一層SELECT GROUP
06/13 12:43, 4F

06/13 12:44, , 5F
外面也是用max,min來取check in check out的值。
06/13 12:44, 5F

06/13 12:44, , 6F
似乎就OK了
06/13 12:44, 6F
文章代碼(AID): #1NNTFMQP (Database)
文章代碼(AID): #1NNTFMQP (Database)