Re: [SQL ] 問一個排序的問題

看板Database作者 (人比人Cheese人)時間18年前 (2008/02/02 23:00), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串2/4 (看更多)
: T1 : ID(PK) Value1 Value2 : ---------------------- : 251 AAA 111 : 252 BBB 333 : 253 AAA [null] : 254 BBB 222 : 255 AAA 000 : 256 CCC 222 : 257 CCC [null] : 希望能產出下面的報表 Value1為UNIQUE : Value1 Value2 : -------------- : AAA 000 : BBB 333 : CCC [null] : Value2的規則是 000 > 333 > [null] > 222 > 111 這個題目要解決的重點有兩處, 第一個是屏蔽掉null值,再來是自訂的排序邏輯。 在Oracle中用NVL(), CONV_TBL 在MySQL中用IfNull(), A B C 在SQL Server用IsNull(), ------------- 轉換掉null值之後, 000 0 000 就可以賦予自訂的排序邏輯。 333 1 333 NA 2 [null] 如果是大量且常用的商業邏輯, 222 3 222 可以做一個轉換表,大概像右邊: 111 4 111 SELECT Value1,C FROM ( SELECT Value1,min(B) AS minB FROM T1 LEFT JOIN CONV_TBL ON NVL(Value2,'NA')=A GROUP BY Value1 ) LEFT JOIN CONV_TBL ON minB=B 如果不允許做一個轉換表, 就用CASE WHEN語法寫多個判斷式也可以。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.166.51.233

02/03 00:16, , 1F
推!不過原作說是面試考題,我想應是要考case When用法的
02/03 00:16, 1F
文章代碼(AID): #17f8MD1J (Database)
討論串 (同標題文章)
文章代碼(AID): #17f8MD1J (Database)