SQL - Informixの - 文字に数値から、カラムのデータ型を変更します

StackOverflow https://stackoverflow.com/questions/533879

  •  22-08-2019
  •  | 
  •  

質問

私は1つの列に数値の整数値を持つ一時テーブルを有しています。私はいくつかの基準に基づいて、文字の値を持つ整数値を置き換えるためにいずれかの場合、または私は自動的にいくつかの基準に基づいて自分自身に値を挿入した文字タイプの別の列を追加したい。

X <= 1の場合、
"SP" に変更するか、その行の新しい列と店舗 "SP" を作ります
はまた、コマンドがInformixの私のバージョンでは一時テーブルでは許可されていない変更
X> 1であれば、「FA」への変更や、その行の新しい列や店舗「FA」を行います。

役に立ちましたか?

解決

SELECT ID、年、CASE yr_offset <= 1 THEN "SP" ELSE "FA" エンドケース

<のhref = "http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls909.htm" のrel = "nofollowをnoreferrer 「> http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls909.htm の

他のヒント

あなたが正しいなら、あなたは一時テーブルを変更することはできません。この得られた値との余分な列を追加は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, ...

<のhref = "http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com.ibm.sqls.doc/sqls909.htm" のrel = "nofollowをnoreferrer 「>手動のからCASE構文の詳細

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;
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top