0

我有一个table与列codedocument。该列code可能具有字母数字值(仅字母)和/或数值(仅数字)。在模型中,每个数字code都有一个等效的字母数字code。下面的记录代表了这种情况的一个例子(格式为 ( document, code);( document, code):

(12345678900,ABC);(12345678900,999)

但是,一个字母数字code可能并不总是有一个等价的 numeric code,所以下面的例子代表了我们有 3 条不同记录的情况

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

考虑到这一点,我想做的是:我将用来搜索记录的总是字母数字code,当我有一个等效的数字时,我想要数字的结果,但是当字母没有有数字等价物,我想要字母数字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

4

1 回答 1

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

演示

于 2013-07-12T20:26:34.727 回答