SQL-編出最大值的編號,並往左補0成3 碼,若找不到最大值就帶入「001」

SQL-編出最大值的編號,並往左補0成3 碼,若找不到最大值就帶入「001」

昨天搞了一個讓人很難維護的需求,

客戶要求針對編號要在新增時重編,

而且有固定格式,

在設計時發現若找不出最大值,

還要帶入「001」。

 

由於是在SQL新增時,

所以直接用SQL語法處理,

但不建議用此方法,

很難做維護,

但只有這一位客戶要求,

先以特例完成。

 

SQL:


(select case when max(NO) is not null then substring('000', 1, 3 - len(convert(nvarchar,(convert(int,substring(max(NO),len(max(NO))-1,2)))))) + convert(nvarchar(3), convert(nvarchar,(convert(int,substring(max(NO),len(max(NO))-1,2)))))   else '001'  end 
from TB

 

我們是用max()判斷,再用case when轉成固定格式三碼,

注意,我們發現在使用max()時用group by會找不出值。

 

自我LV~