婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 教你輕松學會SQL Server記錄輪班的技巧

教你輕松學會SQL Server記錄輪班的技巧

熱門標簽:智能語音車載電話機器人 安陽天音防封電銷卡 衛星地圖標注距離 外呼系統的話術 陽光創信ai外呼獲客系統助力 貴州外呼回撥系統是什么 競圣地圖標注服務 智能外呼系統需要多少錢 云南全自動外呼系統公司

例:公司員工采取三個輪班制度:凌晨0:00到早上8:00為第一班,早上8:00到下午4:00為第二班,下午4:00到晚上12:00為第三班。

員工使用電子時鐘進行簽名,這種電子簽名可以自動將記錄添加到SQL Server數據庫中。但是,有時候,需要增加一個夜班;即使這個輪班發生在第二天,它仍然會被認為是第三班。

你也許希望根據輪班對記錄進行分組,但是在你的計劃中會有兩個非常令人頭痛的問題:
(1)不是所有的雇員都是按時到達的;
(2)有時候員工工作的時間會比他們的一個輪班的時間長一些。

為了能在你的列表中得到正確的分組,你必須假設所有的員工能在一個輪班的開始和結束時間之間的任意時間開始工作。

使用CASE語句是一種解決辦法。Listing A中的SQL語句告訴我們,在創建測試表沒有錯誤的情況下,它是如何工作的。

為了使程序代碼完全準確的運行,你需要在時間的小窗口中得到每一個輪班的開始時間和下一個輪班的結束時間。在剛才的例子中,你可以用"15:59:59.123"這個值代替@StartTime,然后再重新運行代碼。這時候,你必須在每一個輪班結束的分界點上增加999毫秒。

解決方案

這個例子假設輪班時間從來沒有改變過,但是如果改變了輪班時間該怎么辦呢?你必須仿照這個例子并根據改變了的時間寫出所有的代碼。

一個更好一點的主意就是,針對我們的輪班創建一個表來調用Shifts的開始時間和結束時間。在這個表中,你可以修改Case語句來查找StopTime列。

Listing B中包含了創建Shifts表并向該表中增加記錄的代碼。代碼在一個輪班中設置了時間后,這樣使代碼看上去既簡單又靈活:

復制代碼 代碼如下:

DECLARE @StartTime VARCHAR(20)
SET @StartTime ="22:59:59"
SELECTTOP 1 ShiftName FROM ShiftWork.Shifts
WHERE Shifts.StartTime = @StartTime
ORDERBY StartTime DESC


我之所以要將輪班記錄進行降序排列,是為了避免第三個輪班的邊界問題。我將用一些測試案例來論證我的結論,這些內容你可以在Listing C中看到。

實際上,你可以將這個邏輯應用到TemeCards表的記錄中去,而不需要創建另外的表,也就不需要在表中增加數據了。我同樣使用一個簡單的變量來論證我的邏輯。

標簽:欽州 鄂爾多斯 河源 預約服務 周口 湘潭 營口 寧夏

巨人網絡通訊聲明:本文標題《教你輕松學會SQL Server記錄輪班的技巧》,本文關鍵詞  教你,輕松,學會,SQL,Server,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《教你輕松學會SQL Server記錄輪班的技巧》相關的同類信息!
  • 本頁收集關于教你輕松學會SQL Server記錄輪班的技巧的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 霍州市| 南平市| 彰武县| 九江市| 双牌县| 册亨县| 崇礼县| 普安县| 封丘县| 北川| 金川县| 竹山县| 崇阳县| 神池县| 惠水县| 洪湖市| 息烽县| 蕉岭县| 乐清市| 尼木县| 通化市| 莱阳市| 万盛区| 辽阳市| 安国市| 隆昌县| 泸定县| 太仆寺旗| 绿春县| 福贡县| 淮南市| 岳阳县| 泰宁县| 内江市| 大同市| 汨罗市| 惠水县| 蚌埠市| 紫阳县| 崇信县| 温泉县|