2013-07-12 143 views
0

我有一個table,列codedocumentcode列可能包含字母數字值(僅限字母)和/或數值(僅限數字)。在該模型中,每個數字code都有一個字母數字相當於code。下面的記錄代表這種情況的一個示例(在形式(documentcode);(documentcode):SQL,加入同一張表

(12345678900,ABC);(12345678900,999)

但是,一個字母數字code可能並不總是有一個等效數字code,所以下面的例子代表了一種情況,我們有3個不同的記錄

(12345678900,ABC);(12345678900,999);(00987654321,XYZ);(11111111111,DEF)

考慮到這一點,我想要做的就是跟隨着g:我用來搜索記錄的東西總是字母數字code s,而當我有一個等效數字時,我想以數字結果作爲結果,但是當alpha沒有數字等值時,我需要字母數字code

舉例來說,如果我執行下面的選擇,我會得到下面的結果:

  1. SELECT code FROM table WHERE code = 'ABC' - >結果:999
  2. SELECT code FROM table WHERE code = 'DEF' - >結果:DEF
  3. SELECT code FROM table WHERE code = 'XXX' - >結果: (空白)

我很感謝有人能幫助我。

問候,

AMR

回答

0

試試這個

SELECT 
    f1.doc 
    , COALESCE(f2.code, f1.code) code 
FROM foo f1 
LEFT JOIN(
    SELECT doc, code 
    FROM foo 
    WHERE code <> @code 
) f2 ON f2.doc = f1.doc 
WHERE f1.code = @code 

demo

+0

感謝您的關注,但它沒有工作,哥們。 – Arthur