-1计算100天后病毒发作的日期。
print convert(varchar(50),dateadd(day,100,getdate()),111)
--2凡是入职一年以上的员工,工资增加500¥
select *from Employee
update Employee set EmpSalary=EmpSalary+1000
where DATEADD(year,1,EmpInTime)<GETDATE()
--3计算1975年10月5日到现在现在相差多少年/月/日/小时?
print datediff(year,'1975-10-5',getdate());
print datediff(month,'1975-10-5',getdate());
print datediff(day,'1975-10-5',getdate());
print datediff(hour,'1975-10-5',getdate())
--4统计2008年入职的员工
select * from CallRecords
where year(EmpInTime)='2008'
--5输出所有数据中通话时间最长的5条记录。
select top 5 *
from CallRecords
order by DATEDIFF (SECOND ,StartDateTime,EndDateTime )desc;
--6将结果集加入一列“通话时长(秒)”
select top 5 *,
通话时长=DATEDIFF (SECOND ,StartDateTime,EndDateTime )
from CallRecords
order by DATEDIFF (SECOND ,StartDateTime,EndDateTime ) desc,CallerNumber desc;
--三、Case函数用法
--1.1
--use School
-- SELECT * FROM Score
-- SELECT * FROM Student
----90分以上优秀
----80分以上良好
----70分以上中等
----60分以上及格
----60分以下不及格
use Schools
select tSId ,tEnglish,
评级=
case
when tEnglish >=90 then '优秀'
when tEnglish>=80 then '良好'
when tenglish>=70 then '中等'
when tenglish>=60 then '合格'
else
'不及格'
end
from TblScore
--2、要求,查询结果集中有A B C三列,用SQL语句实现:当A列大于B列时,在C中显示A列的值否则显示B列中的值。
create table TestCase
(
A int,
B int
)
select * from TestCase
insert into TestCase values(10,20)
insert into TestCase values(100,32)
select A,B,
C=
case
when A>B then A
else B
end
from TestCase
--3.在订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>6000金牌,>5500\
--银牌,>4500铜牌,否则普通)
select *from MyOrders
select
salesAssistant AS 销售员,
SUM(saveNumber*savePrice) as 销售总金额,
称号=
case
when SUM(saveNumber*savePrice) >6000 then '金牌'
when SUM(saveNumber*savePrice) >5500 then '银牌'
when SUM(saveNumber*savePrice) >4500 then '铜牌'
else '普通'
FROM MyOrders
GROUP BY salesAssistant
4............
select number,
(
case
when amount >0 then amount
else 0
end
)as 收入,
(
case
when amount >0 then amount
else abs(amount)
end
)as 支出
from XF