❶ sql 急求工齡計算語句
SELECTe_no員工編號,d_name部門名稱,e_name員工姓名,e_salary薪水,e_hireDate入職日期,
DATEDIFF(YEAR,e_hireDate,GETDATE())工齡
FROMemployeeinnerjoinDept
one_gender='女'andEmployee.dept_no=Dept.d_no
❷ 以下問題用SQL語言怎麼輸入
1)輸出「學生」表中的所有信息。
select*from學生
2)輸出「學生」表中的所有信息,要求只顯示學號和姓名欄位。
select學號,姓名from學生
3)輸出「學生」表中所有男生信息,要求顯示學號、姓名、性別字
段。
select學號,姓名,性別from學生where性別='男'
4)輸出「學生」表中學號為「03201017」的學生信息。
select*from學生where學號='03201017'
5)輸出「學生」表中學號為「03101010」的學生成績,要求顯示學
號、姓名、課程名、成績欄位。
selecta.學號,b.姓名,c.課程名稱,a.成績
from修課成績a,學生b,課程c
wherea.學號=b.學號anda.課程代碼=c.課程代碼
anda.學號='03101010'
後續的還在寫
❸ sql 工齡計算
這是我以前寫的和你的這個差不多,你看一下,把你的改改就OK了:
select Age=case
when (month(hiredate)<month(getdate())) or (day(hiredate)<=day(getdate())
and month(hiredate) = month(getdate()))
then datediff(month,hiredate,getdate())
else
datediff(month,hiredate,getdate())-1 --否則減1
end
from emp where empno=11
❹ 已知工人的入職時間《hire_date》,怎樣用SQL語句,查詢出工人的工人的工齡。欄位是datetime
工作月數:
select datediff(mm,hire_date,getdate()) from tablename
工作年數:
select datediff(mm,hire_date,getdate())/12 from tablename
❺ SQL計算入學工齡
ORDER BY(y,TeacherTime,getdate())這個有錯,括弧里是什麼東西,至少也缺個時間函數吧datediff(year,TeacherTime,getdate());
rowmber='" + DropDownList2.Text + "'";
這種方式SQL不支持,可以使用變數來解決。
除此之外,不知你整個語句想處理什麼,
干嗎要用排名函數?
你這里的rowmber只是工齡的排名
❻ 求教計算特殊工種工齡SQL語句
selectt.zgbm,(selectnamefromAwherezgbm=t.zgbm)asname
,SUM(casewhengz0like'T%'thenyy1-yy0else0end)as[特殊工種工齡]
from
(selectt1.zgbm,t1.yyasyy0,t1.gzasgz0
,casewhenexists(select*fromBwherezgbm=t1.zgbmandyy>t1.yy)
then(selectMIN(yy)fromBwherezgbm=t1.zgbmandyy>t1.yy)
elseYEAR(getdate())
endasyy1
,casewhenexists(select*fromBwherezgbm=t1.zgbmandyy>t1.yy)
then(selecttop1gzfromBwherezgbm=t1.zgbmandyy>t1.yyorderbyyy)
elsenull
endasgz1
fromBt1)ast
groupbyt.zgbm
--或
selectt.zgbm,(selectnamefromAwherezgbm=t.zgbm)asname
,SUM(casewhengz0like'T%'thenyy1-yy0else0end)as[特殊工種工齡]
from
(selectt1.zgbm,t1.yyasyy0,t1.gzasgz0
,isnull((selectMIN(yy)fromBwherezgbm=t1.zgbmandyy>t1.yy),YEAR(getdate()))asyy1
,(selecttop1gzfromBwherezgbm=t1.zgbmandyy>t1.yyorderbyyy)asgz1
fromBt1)ast
groupbyt.zgbm
❼ SQL語言計算職工表裡的職工年齡
select datediff(yyyy,生日,getdate()) as 年齡
datediff是SQL的一個函數計算兩個日期之間的差額
yyyy表示要計算的是年份的差額
生日就是生日的欄位
getdate()是返回當前日期的函數
select 名字,datediff(yyyy,生日,getdate()) as 年齡 from worker
這樣就全部都出來啦,哪用一個個的寫啊!
❽ SQL編寫的工齡計算和它所產生的值,小於等於15號算本月大於16號按下月開始計算工齡 大於6個月就有補貼;
select
(casewhen
((casewhen[工齡起算日]isnullthen0
elsedatediff(month,[工齡起算日],SalaryDate)+(casewhendatepart(day,[工齡起算日])<=15then1else0end)
end)
)<=6then0
else(casewhenemployeetype=N'經理'then100
whenemployeetypein(N'主管',N'領班')then80
whenemployeetype=N'員工'then50
else0
end)
end
)as[補貼]
看上面這個sql是否符合要求。
❾ 用oracle的SQL語句計算工人的工齡並用substr查詢
計算工齡,我有一個函數,可以幫助你。可以再次基礎上去做下改動就好。
調用方式:select fn_GetWorkYear('2011-11-23','2019-10-25')
create function [dbo].[fn_GetWorkYear]
(
@beginday datetime, --開始日期
@endday datetime --結束日期
)
returns int
as
begin
if @beginday > @endday
begin
return 0;
end
declare @workyear int
select @workyear = datediff(year, @beginday, @endday)-1--年份差值
if datepart(month, @endday) > datepart(month, @beginday)--月份超過
begin
select @workyear = @workyear + 1
end
if datepart(month, @endday) = datepart(month, @beginday)--月份一樣
begin
if datepart(day, @endday) >= datepart(day, @beginday)--日超過
begin
select @workyear = @workyear + 1
end
end
return @workyear ;
End
GO