close
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欄位
即可得到你要的結果
你再試試看,有問題再補充吧
我用的可能比較麻煩,不過想很久,還是必須用到暫存資料表,請見諒!
全站熱搜