SQL, присоединение к той же таблице

У меня есть table со столбцами code и document. Столбец code может иметь буквенно-цифровые значения (только буквы) и/или числовые значения (только цифры). В модели каждое числовое значение code имеет буквенно-цифровой эквивалент code. Записи ниже представляют собой пример этой ситуации (в форме (document,code);(document,code):

(12345678900,ABC);(12345678900,999)

Но буквенно-цифровое code не всегда может иметь эквивалентное числовое code, поэтому приведенный ниже пример представляет ситуацию, когда у нас есть 3 разные записи.

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

Имея это в виду, я хочу сделать следующее: то, что я буду использовать для поиска записей, всегда является буквенно-цифровым codes, и когда у меня есть эквивалентное числовое значение, я хочу получить числовое значение, но когда альфа не имеют числовой эквивалент, я хочу буквенно-цифровой 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' -> Результат: (пусто)

Я ценю, если кто-нибудь может мне помочь, пожалуйста.

С уважением,

УПП


person Arthur M. R.    schedule 12.07.2013    source источник


Ответы (1)


Попробуй это

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

демонстрация

person T I    schedule 12.07.2013