2016-09-14

〔SQL〕一次重新設定流水序號 / UPDATE ROW_NUMBER()

範例:執行將依據指定排序條件,將特定欄位重設流水序號


WITH UT as (SELECT SCode, L, ROW_NUMBER() OVER (ORDER BY SCODE) as RN FROM SP03 WHERE sp02_scode=100) UPDATE UT SET L=RN
5 章老師的電腦小講堂: 9月 2016 範例:執行將依據指定排序條件,將特定欄位重設流水序號 WITH UT as ( SELECT SCode , L , ROW_NUMBER () OVER ( ORDER BY SCODE ) as RN FROM SP03 WHERE sp0...

2016-09-08

提問單〔Access〕:將日期加上指定的年區間的應用(iif / isnull / DateSerial / DateAdd )


如果您有一份資料表中,有2個欄位如上
想要在查詢表或表單中,增加一個欄位,內容為[基準日期]+[年份],要如何處理?

在撰寫運算式時,要注意其中[基準日期]有可能是空值,運算式在若遇到沒有日期的情況,就不進行加總年份。

所以,我們依以下兩個階段將運算式完成
A. 判斷是否[基準日期]為空值
B. 非空值時,我們要將[基準日期]加上[年份]得到我們想要的日期

首先,我們如何判斷日期為空值呢?
通常我們判斷字串為空值都使用 空字串"",但日期的格式則為null,所以可以使用以下函數來確認

  • isnull([基準日期])

若為空值則回傳true,有值則回傳false

再來,如何將日期做加減呢?日期函數很多種,都可以達成加減的目的,可以例用以下2個函數來做


  • DateAdd(增加類別, 增加量, 日期)

例如:DateAdd("yyyy",[增加年份],[基準日期])
            DateAdd("yyyy", 2 , 2016-09-05) → 2018-09-05

ValueExplanation
yyyyYear
qQuarter
mMonth
yDay of the year
dDay
wWeekday
wwWeek
hHour
nMinute
sSecond
或是您可以自已計算年、月、日,再組合成日期格式
  • DateSerial(年, 月, 日)
例如:DateSerial(Year([基準日期])+[增加年份], Month([基準日期]), Day([基準日期]))
            DateSerial(Year(2016-09-05)+2, Month(2016-09-05), Day(2016-09-05))
            →DateSerial(2016+2, 9, 5)→2018-09-05

這些運算式寫好時…就來做判斷的組合了…又要用到經典函數了
  • iif(判斷式,成立,不成立)
在Excel中函數為if,Access多了個i喔~iif...千萬別寫錯囉~

我們來完成這個判斷吧!
=iif(isnull([基準日期]),"",DateAdd("yyyy",[增加年份],[基準日期]))

您,組對了嗎??

5 章老師的電腦小講堂: 9月 2016 如果您有一份資料表中,有2個欄位如上 想要在查詢表或表單中,增加一個欄位,內容為[基準日期]+[年份],要如何處理? 在撰寫運算式時,要注意其中[基準日期]有可能是空值,運算式在若遇到沒有日期的情況,就不進行加總年份。 所以,我們依以下兩個階段將運算式完成 A....
小講堂經過多次搬移,舊文章連結及內容較難整理~
大家可以新文章為主~
每篇文章後有代碼,任何文章問題可至FB小講堂用代碼提問唷~