LV超3A名牌購物網

因為卡在你的欄位B並不是數值型態,所以實在有點麻煩,我用了比較笨的方法,就是將欄位B的數字,放到另一個暫存資料表的欄位,再處理GROUP

SQL語法如下:

CREATE TEMPORARY TABLE tempAA AS SELECT id,TA,TB,CAST(SUBSTR(LPAD(SUBSTR(TB, 4),3,0),1,2) AS SIGNED) AS TBS FROM test_table ;

SELECT * FROM (SELECT * FROM tempAA ORDER BY TBS DESC) MYTEST GROUP BY TA ;
這是兩道SQL
我的TABLE名稱叫做TEST_TABLE
 我的欄位分別是 ID=流水號 ,TA = A欄位 ,TB = B欄位
第一道SQL是在處理B欄位,並丟給暫存資料表tempAA
SUBSTR()擷取自串的函數
LPAD()補位數的函數
CAST()轉換字串的函數

處理完畢後,再用另一道SQL去分組剛剛的暫存資料表
因為GROUP沒有排序的功能,所以必須用到子查詢
先將TEMPAA的結果排序,之所以沒在第一道SQL就做排序,是因為ORDER BY不支援排序你處理過的欄位,所以只好用第二道SQL的子查詢先做排序
MYTEST只是一個別名,把前面的結果丟給這個別名,不然會有錯誤
最後GROUP BY A欄位
即可得到你要的結果

你再試試看,有問題再補充吧
我用的可能比較麻煩,不過想很久,還是必須用到暫存資料表,請見諒!

LV超3A名牌購物網
arrow
arrow
    全站熱搜

    方志遠 發表在 痞客邦 留言(0) 人氣()