像这样的表:
id doc_before doc_after
0 100
1 167 153
2 132
我想得到doc_after
if 存在 else 得到doc_before
.
这该怎么做 ?
我想要这样的结果:
0 100
1 153
2 132
SELECT id
, COALESCE(doc_after, doc_before) AS the_doc
FROM the_table
;
您可以使用CASE
语句。这是受支持的 Informix 语法。
SELECT ID, CASE WHEN nvl(doc_after,'') <> '' THEN doc_after ELSE doc_before END AS doc
, CASE WHEN nvl(doc_after) <> '' THEN 'doc_after' ELSE 'doc_before' END AS camefrom
FROM yourtable
CASE 更惯用的用法将避免使用 NVL:
SELECT ID,
CASE WHEN doc_after IS NULL THEN doc_before ELSE doc_after END AS doc_number,
CASE WHEN doc_after IS NULL THEN 'B' ELSE 'A' END AS doc_source
FROM AnonymousTable;
显然,可以根据您的需要更改“之后”的编码“A”和“之前”的“B”。