2013-07-12 1 views
0

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

(12345678900,ABC);(12345678900,999)

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

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

Имея это в виду, что я хочу сделать, это followin g: то, что я буду использовать для поиска записей, всегда является буквенно-цифровым code s, и когда у меня есть эквивалентный числовой, я хочу, как результат, числовое, но когда альфа не имеет числового эквивалента, мне нужен буквенно-цифровой 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

 Смежные вопросы

  • Нет связанных вопросов^_^