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