1

我有一个临时表,其中一列中有数字整数值。我想根据某些条件将整数值替换为字符值,或者我想添加另一列字符类型,该列会根据某些条件自动将值插入自身。

如果 x <= 1,更改为“SP”或创建新列并将“SP”存储在该行中
如果 x > 1,更改为“FA”或创建新列并将“FA”存储在该行中

此外,更改命令是在我的 Informix 版本中不允许在临时表上使用。

4

3 回答 3

1

SELECT id, yr, CASE WHEN yr_offset <= 1 THEN "SP" ELSE "FA" END CASE

http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls909.htm

于 2009-02-10T20:27:22.853 回答
1

你是对的,你不能改变临时表。可以使用CASE语句添加具有此派生值的额外列,即:

SELECT enroll.ud, enroll.yr, (CASE
   WHEN enrollsess.yr_offset <=1 THEN "FA"
   ELSE "SP" END)::CHAR(2) AS sess, ...

强制转换(即括号和::CHAR(2))可能不是必需的。

如果逻辑可以表示为零/非零(在您的示例中不清楚 yr_offset 是否可以为负),那么它就更简单了:

SELECT enroll.id, enroll.yr,
     DECODE(enrollsess.yr_offset, 0, "FA", "SP")::CHAR(2) AS sess, ...

手册中有关 CASE 语法的更多详细信息

于 2009-02-10T20:39:26.240 回答
0
SELECT          enrollsess.id,
                enrollsess.yr,
                "SP" sess
FROM            enrollsess
WHERE           enrollsess.yr_offset <= 1
UNION
SELECT          enrollsess.id,
                enrollsess.yr,
                "FA" sess
FROM            enrollsess
WHERE           enrollsess.yr_offset > 1
INTO            TEMP enrollsess2 WITH NO LOG;
于 2009-02-10T19:56:50.960 回答