Dong Lam Trien

Dong Lam Trien

  • 773
  • 942
  • 131.9k

Query get the largest ID number of the string ?

Apr 13 2017 10:35 PM
Suppose in SQL Server 2005 I have the TABTHUCHI data table has the following fields:
IDSOPHIEUTHUCHI // Primary Key
RIGHT
...
IDSOPHIEUTHUCHINGAY
PC-04/08/16-00804/08/2016
PC-07/06/2016-00607/06/2016
PC-08/10/2017-01008/10/2017
PC-08/12/2017-01208/12/2017
PC-10/01/2015-210/01/2015
PC-25/09/2017-00925/09/2017
PT-01/02/2015-00101/02/2015
PT-03/11/17-01103/11/2017
PT-05/04/2015-00405/04/2015
PT-15/07/2016-0715/07/2016
PT-20/05/2016-00520/05/2016
PT-31/03/2015-00331/03/2015
At the IDSOPHIEUTHUCHI field, you will see the letter "PT" or "PC", the year will be 2 characters or 4 characters and the last digit must be PT-(dd)/(MM)/(yyyy) - (***)
Use (*) is the incremental number generated by the system, the length is determined by the number of asterisks, a maximum of 9.
Example:
HD (**) includes 99 numbers running from HD01, HD02 to HD99.
HD (**) includes 999 numbers running from HD001, HD002 to HD999.
Use (MM) to get the current month.
Use (years) to retrieve the current year (last two digits of the year).
Use (yyyy) to get the current year (all 4 numbers).
Use (dd) to get the current date.
According to the above data, you want to get the largest ID of 2015 "PT". Find the last digit of 2015: PT-05/04/2015-004, the largest ID 2015 will be 005, and assume The largest ID number of this date is 14/04/2015 will be: PT-14/04/2015-005, when taking the largest number you must also note Year can be 2 digits or 4 digits and format input.
If the input format: PT-(dd)/(MM)/(yy)-(***) output: PT-14/04/15-005
If the input format: PT-(dd)/(MM)/(yyyy)-(*****) output: PT-14/04/2015-00005
If the input format: PT-(***) output: PT-005
Similar to other years for "PT" or "PC" and the largest ID date.
If the "PT" format of the above data:
If the input format: PT-(dd)/(MM)/(yyyy)-(***) and "14/04/2016", the output: PT-14/04/2016-008
If the input format: PT-(dd)/(MM)/(yyyy)-(***) and "14/04/2017", the output: PT-14/04/2017-012
If the input format: PT-(***) and "14/04/2017" is output PT-012
If the "PC" format of the above data:
If the input format: PC-(dd)/(MM)/(yyyy)-(***) and "14/04/2015" is output: PC-14/04/2015-003
If the input format: PC-(dd)/(MM)/(yyyy)-(**) and "14/04/2016" then output: PC-14/04/2016-09
If the input format: PC-(dd)/(MM)/(yy)-(***) and "14/04/2017" then output: PC-14/04/17-013
How can SQL Server retrieve the largest ID in string form as shown above ?

Answers (3)