iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0
自我挑戰組

資料庫二年級:練習AdventureWorks範例資料庫系列 第 14

[第十四天]變數:一起找出「當月壽星」吧

  • 分享至 

  • xImage
  •  

在我的公司每個月中,
都會為當月生日的夥伴慶生,
因此每個月我都要整理出這些生日夥伴的資料,
讓我們一起來看看吧。

先挑選出全部夥伴的生日月分:

SELECT birthdate,datepart(mm,birthdate) 生日月份,* 
FROM [HumanResources].[Employee] 
ORDER BY datepart(mm,birthdate)

結果就會是:
https://ithelp.ithome.com.tw/upload/images/20220911/201520491r5PsMa0ye.jpg

把每個人分到各自的生日月分,
工作就結束了嗎?
但是這樣有個風險,
假設我們老早就整理好這份名單,
可能會遺漏掉新進的夥伴和離開的前輩。

因此我的習慣是每月1號再做整理,
我只要將每個月的「月份數字」設定成變數,
就可以簡單完成了!

--宣告一個變數,準備儲存"現在幾月"這個數字(int)
DECLARE @nowMonth int
--設定初執
SET @nowMonth = DATEPART(mm,GETDATE())
--檢查看看結果
SELECT @nowMonth 現在幾月

https://ithelp.ithome.com.tw/upload/images/20220910/20152049yl0irLRTwQ.jpg

現在是9月,結果沒錯!

接下來就是選出9月的壽星名單,
就大功告成啦~

如果想要找出9月生日的顧客也沒問題,
再JOIN [Person].[Person],便能找出壽星姓名:
(這裡小菜一碟,就不贅述啦)

SELECT birthdate,datepart(mm,birthdate) 生日月份,FirstName,MiddleName,LastName
FROM [HumanResources].[Employee] E
JOIN [Person].[Person] P on E.BusinessEntityID = P.BusinessEntityID
WHERE DATEPART(mm,birthdate) = @nowMonth
ORDER BY PersonType

https://ithelp.ithome.com.tw/upload/images/20220911/201520490b69ITqvjw.jpg

變數可以佔存我們需要的值,
讓我們不用每個月都重新宣告現在是幾月份,
使用起來十分便利。

十月就要到啦,
大家有興趣的話可以試著找看看十月的壽星有哪些人ㄛ~

但還有更便利的,
就是當變數
結合預存程序(stored procedure,有些人會簡稱為sp或proc),
這也是我們接下來的主題。


上一篇
[第十三天]INDEX&執行計畫
下一篇
[第十五天]預存程序-祝「誰」生日快樂
系列文
資料庫二年級:練習AdventureWorks範例資料庫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言