2026年6月14日 星期日

V1060301 – 如何以 ITEM 排序 1,2,3,..10,10-1,..117,117-1,117-1A,117-A,118(依數字順序) - 字母排序 - 數字排序

目的: V1060301 – 如何以 ITEM 排序  1,2,3,..10,10-1,..117,117-1,117-1A,117-A,118(依數字順序)

      不可 1,10,100,117,..,2,3, (依字母順序)

處理說明:






1>SQL:  --> (若有 - ,則ITEM去除 - 以後文字, , 若無 -, 則用 ITEM) 轉成數字 ,排序

select  PROJID,TYPE,
(case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as ITEM_,
CAST((case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as INTEGER) as ITEM__,   
                   ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,   
                   SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,   
                   TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,   
                   PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,   
                   MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,   
                   IS_SER ,IS_CANCEL ,CANCEL_REASON   
           FROM  AMM_CHKCHG  A   
           WHERE  1=1   
           AND   PROJID  LIKE '%AJT%'
)
ORDER  BY PROJID,TYPE,ITEM__


c# SQL:

select  dense_rank()  over(order by  PROJID,TYPE,
CAST((case when instr(ITEM,'-')>0 then substring(ITEM,1,instr(ITEM,'-')-1) else ITEM end) as INTEGER)) as RNK,"
                                                  + "   PROJID ,TYPE ,ITEM ,WUC ,CHKCHG_NM ,CHKCHG_TM ,"
                                                     + "   SITEM ,CHKCHG_TEXT ,PN ,IS_MULTI ,TMBASE1 ,"
                                                     + "   TMFEQ1 ,TMUNIT1 ,TMBASE2 ,TMFEQ2 ,TMUNIT2 ,"
                                                     + "   PTMVAL1 ,PTMUNIT1 ,PTMVAL2 ,PTMUNIT2 ,REMARK ,"
                                                     + "   MKID ,MKDT ,ENG_LR ,HAS_FCHK ,FCHK_VAL ,"
                                                     + "   IS_SER ,IS_CANCEL ,CANCEL_REASON "
                                      + "  FROM  AMM_CHKCHG  A "
                                      + "  WHERE  1=1  ";

沒有留言:

張貼留言