1 计算 100 天后病毒发作的日期。
print convert(varchar(50),dateadd(day,100,getdate()),111)
2 凡是入职一年以上的员工,工资增加 500 ¥
Update Employees set EmpSalary=EmpSalary+500 wheredateadd(year,1,empentime)<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 Employees
Where year(startdatetime)=’2008’
5 输出所有数据中通话时间最长的 5 条记录。
Select top 5 * , 通话时长 ( 秒 )=datediff(second,startdatetime,enddatetime) from callreades
Order by 通话时长 desc
6 将结果集加入一列“通话时长(秒)”
Select top 5 * , 通话时长 ( 秒 )=datediff(second,startdatetime,enddatetime) from callreades
Order by 通话时长 desc
三、 Case 函数用法
1.1
use School
SELECT * FROM Score
SELECT * FROM Student
--90 分以上优秀
--80 分以上良好
--70 分以上中等
--60 分以上及格
--60 分以下不及格
Selectscoreid,studentid,english, 评级 =
Case
Whenenglish>=90 then ’ 优秀 ’
When english>=80 then ’ 良好 ’
Whenenglish>=70 then ’ 中等 ’
When english >=60 then ‘ 及格 ’
Else‘ 不及格 ’
Endform score
2 、要求,查询结果集中有 A B C 三列 , 用 SQL 语句实现:当 A 列大于 B 列时,在 C 中显示 A 列的值否则显示 B 列中的值。
Select A,B,C=
case when A>=B then A
Else (b)
End from TestCase
3、 在订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号( >6000 金牌, >5500 银牌 ,>4500 铜牌,否则普通)
Use Test
Select * from MyOrders
Select salesAssistant AS 销售员 ,
SUM(saveNumber*savePrice) as 销售总金额 ,
称号 =
Case
When SUM(saveNumber*savePrice)>6000then’ 金牌 ’
When SUM(saveNumber*savePrice)>5500then’ 银牌 ’
When SUM(saveNumber*savePrice)>4500then’ 铜牌 ’
Else ‘ 普通 ’
End from MyOrders
4
单号 金额
Rk1 10
Rk2 20
Rk3 -30
Rk4 -10
将上面的表输出为如下的格式:
单号 收入 支出
Rk1 10 0
Rk2 20 0
Rk3 0 30
Rk4 0 10
Select Number as 单号 ,
支出 =
case
When ammont>0 then ammont
else 0
end,
收入 =
Case
When ammont<=0 then abs(amount)
Else 0
End
from 表名