1计算100天后病毒发作的日期。
print convert(varchar(50), dateadd(day,100,getdate()),111)
2凡是入职一年以上的员工,工资增加500¥
update employee set fsalary=fsalary+500 where datediff(yy,empintime,GETDATE())=1
3计算1975年10月5日到现在现在相差多少年/月/日/小时?
print datediff(yy,'1975-10-5',getdate())
print datediff(mm,'1975-10-5',getdate())
print datediff(dd,'1975-10-5',getdate())
print datediff(hh,'1975-10-5',getdate())
4统计2008年入职的员工
select COUNT(*) from T_Employee where DATEPART(yy, 入职日期)='2008'
5输出所有数据中通话时间最长的5条记录。
select top 5 * from t_callers order by DATEDIFF(ss,startdatetime,enddatetime) desc
6将结果集加入一列“通话时长(秒)”
select top 5 *,DATEDIFF(SS,startdatetime,enddatetime) as 通话时长 from t_callers order by DATEDIFF(SS,startdatetime,enddatetime) desc
三、Case函数用法
1.1
use School
SELECT * FROM Score
SELECT * FROM Student
--90分以上优秀
--80分以上良好
--70分以上中等
--60分以上及格
--60分以下不及格
select FName,FEnglish,
(case
when FEnglish>=90
then '优秀'
when FEnglish>=80
then '良好'
when FEnglish>=70
then '中等'
when FEnglish>=60
then '及格'
else '不及格'
end
)
from MyStudents
2、要求,查询结果集中有A B C三列,用SQL语句实现:当A列大于B列时,在C中显示A列的值否则显示B列中的值。
select a,b,
(
case
when a>b then a
else b
end
) as 'c'
from abc
3、 在订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>6000金牌,>5500银牌,>4500铜牌,否则普通)
select 销售员,总销售金额=SUM(销售数量*销售价格),
(
case
when SUM(销售数量*销售价格)>6000
then '金牌'
when SUM(销售数量*销售价格)>5500
then '银牌'
when SUM(销售数量*销售价格)>4500
then '铜牌'
else '普通'
end
)
from MyOrders group by 销售员
4
单号 金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上面的表输出为如下的格式:
单号 收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
select number,
(
case
when ammont>0 then ammont
else 0
end
)as 收入,
(
case
when ammont>0 then 0
else ABS(ammont)
end
)as 支出
from _abs