使用这样的表:
id doc_before doc_after
0 100
1 167 153
2 132
我想获得doc_after
如果存在,则获得doc_before
。
怎么做?
我想要这样的结果:
0 100
1 153
2 132
答案 0 :(得分:2)
SELECT id
, COALESCE(doc_after, doc_before) AS the_doc
FROM the_table
;
答案 1 :(得分:1)
您可以使用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
答案 2 :(得分:1)
使用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'可以根据您的需要进行更改。