Ⅰ 如何使用sql語句完成如下的分班功能
select top 30 * from 表
order by 姓名
這樣就是頭30個人.
select top 30 * from 表
order by 姓名 desc
這樣就是後20人
所以呢, 你用update語句的時候可以這么寫。
update 表
set 班級 = '1'
where 姓名 in (select top 30 姓名 from 表 order by 姓名 desc)
再用同樣的辦法將後30人改成3班,
最後, 班級為空的全部改成2班, 簡單吧? 呵呵
Ⅱ sql里我有一張全年工作日表,如9-1,9-2,9-4....,我建立了一個視圖輸入日期就可以查詢當天排班
用代理作業,就是計劃任務,sqlserver自帶的,寫好更新插入語句就會定時自動執行的。數據得進行判斷,沒有在新表的數據才進行插入,已經在的數據可以做更新處理,或者不處理。
Ⅲ 如何排班成台歷格式 sql serever
首先我建議樓主制定作業,每個月考勤借宿後就把歷史數據加轉移到歷史表中,然後再根據優化的一般原則來處理。估計讓你提供硬體升級是不現實的,那麼就資料庫系統而言。可以通過對索引的優化或者重建或者新建來達到一定的優化效果。考勤軟體一般是購買的,更改查詢語句也很難實現。
Ⅳ 請問有沒有人能詳細的告訴我考勤系統V2.0、SQL Server2000裡面的設置「班次「到底是怎麼設置的謝謝~~
其實考勤這方面的操作也很簡單!
首先是一個人事檔案的管理就是填寫員工的資料,
其次是班次的管理,即是對員工上的班次再系統裡面進行排班,再把班次發配給員工
再次就是處理日常報表和月報表等等!
我也是做人事這方面的,若不懂的地方可來咨詢我!
Ⅳ SQL如何最快實現排序
你好,很高興回答你的問題。
具體提供一下表結構以及索引和要執行的sql語句。
Ⅵ 想在查詢裡面把排班班次表的班次相對應到打卡時間上,請問各位大神如何寫SQL語句謝謝!!!
我以前搞過考勤系統。我把大概的思路說下,希望對你有幫助。
1,建立設定班別的table
2,增加班別的遲到早退時間欄位(小時,分鍾)
3,寫一個function,傳入刷卡小時和分鍾,當天班別。比較刷卡時間和班別的遲到早退時間,返回1(真)和0(假)(根據班別,查詢出對應的遲早早退時間。第一筆卡比較遲到,最後一筆卡比較早退)
4,區分這比卡是當天的,還是昨天的,如果是昨天的要追溯到昨天
5,寫一個function,傳入工號,日期,獲得該員工當天的班別
6,select 刷卡表,將遲到早退的function范圍值為1的記錄都找出來
Ⅶ SQL裡面如何將現有的排班表對應到打卡時間裡面
你這兩張表有對應關系嗎?如果有的話才可以轉,沒有的話就不知道哪個科室和哪個人員對應
Ⅷ mySql輪詢排序,如圖,排值班表,如何使用sql語句實現排序
select * from
(select t1.id-t2.min_id+1 as new_id,t1.name,t1.other
from pai_ban_biao t1
inner join (select min(id) as min_id,name from pai_ban_biao group by name )t2
on t1.name=t2.name
)t3
order by t3.new_id,t3.other
Ⅸ 資料庫設計 關於時間排班和時間預定
第2張表,為每個駕證服務員添加工作日,這個表在大能達到哪去啊。假如你有10000個員工,每天也不過是10000條數據而已,做個分區表。數據量真的不大,而且有彈性,後期可以做個歷史表來存儲歷史數據。
如果因為數據多,那麼第2章表,用一個欄位來表示派出與否,並用一個欄位記錄時間。也可以。但是這樣你要查歷史數據,也必須在每次更新這個表之前把數據歸結到歷史表中。第2章表只保留最新的數據。
在說明一下,你的那種設計,第2章表,數據量真的不多。
Ⅹ SQL2000,根據排班,員工信息表,批量生成考勤記錄表。
with pb as ( --每天排班的上班准點秒數與下班准點秒數
select 工號 id,
(case d1 when 10 then 8 when -10 then 20 when 8 then 8 else 0 end)*3600 sb1,
(case d1 when 10 then 20 when -10 then 32 when 8 then 17 else 64 end)*3600 xb1,
--...
(case d31 when 10 then 8 when -10 then 20 when 8 then 8 else 0 end)*3600 sb31,
(case d31 when 10 then 20 when -10 then 32 when 8 then 17 else 64 end)*3600 xb31
),
kq1 as (
select userid id, checktime ct, checktype type, row_number() over(order by checktime) rn
from c
),
kq2 as ( --必須保證有上班就有下班且同一天上班只有1個,否則要去重
select t1.id, day(t1.checktime) dd, --幾號
datediff(ss, cast(convert(char(10), t1.ct, 120) as datetime, t1.ct) sb, --上班秒數
datediff(ss, cast(convert(char(10), t1.ct, 120) as datetime, t2.ct) xb --下班秒數
from kq1 t1 join kq1 t2 on t1.id=t2.id and t1.rn=t2.rn+1
where t1.type='I'
),
kq as (
select id,
max(case when dd=1 then sb end) sb1, max(case when dd=1 then xb end) xb1,
---...
max(case when dd=31 then sb end) sb2, max(case when dd=31 then xb end) xb31,
from kq2
group by id
)
select ui.userid, ui.name,
case when kq.sb1<=pb.sb1 then '准點' else '不準點' end sb1,
case when kq.xb1>=pb.xb1 then '准點' else '不準點' end xb1,
--...
case when kq.sb31<=pb.sb31 then '准點' else '不準點' end sb31,
case when kq.xb31>=pb.xb31 then '准點' else '不準點' end xb31
from userinfo ui left join pb on ui.userid=pb.id
left join kq on ui.userid=kq.id
大致如此,沒測,自己看明白後按自己需求改吧