❶ 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