1

次のような CASE ステートメントを追加して、テーブルの列を変更したいと考えています。

ALTER TABLE GIAC
alter column President_Eligible varchar(3) as CASE WHEN DATEDIFF(day,Date_Election_President,CURRENT_TIMESTAMP) >= 730 THEN 'NON' ELSE 'OUI' END

しかし、私はエラーが発生しています:

メッセージ 156、レベル 15、状態 1、行 2
キーワード「CASE」付近の構文が正しくありません。

これはテーブル構造です:

create table GIAC
(
    Nom_Giac varchar(50) primary key, 
    Raison_sociale varchar(20) not null,
    Ville varchar(20),
    Fax varchar(30),
    Adress varchar(50) not null,
    SiteWeb varchar(40),
    Nom_Prenom_President varchar(50) not null,
    President_Eligible varchar(3) as CASE WHEN DATEDIFF(day,Date_Election_President,CURRENT_TIMESTAMP) >= 730 THEN 'NON' ELSE 'OUI' END,
    Tel_President varchar(30),
    EMAIL_President varchar(30),
    Nom_Prenom_Directeur varchar(50),
    Tel_Directeur varchar(30),
    EMAIL_Directeur varchar(30),
    Nom_Prenom_Contact varchar(50),
    Tel_Contact varchar(30),
    EMAIL_Contact varchar(30),  
    RIB_Fonct varchar(60) unique,
    RIB_Action varchar(60) unique 
)
4

3 に答える 3

1

古い質問ですが、何年にもわたって訪れた十分な数の人々が、まだ答えを出すのに役立ちます. 2 段階のプロセス。テーブルを変更してフィールドを追加します。次に、case ステートメントで更新します。例えば

alter table mytable add column new_field int;
update mytable  set new_field =
                (case
                when existing_field =1 then 1
                when existing_field =2  then 0
                when existing_field =0  then 0
                else null
                end);
于 2016-12-07T18:36:00.323 に答える
0

残念ながら、計算列を変更するには、列を削除して再作成する必要があります。

于 2012-11-11T10:31:30.803 に答える
0

データ型を指定することは無効であるため、次のようにする必要があります。

President_Eligible  as CASE WHEN 1>2 THEN 'NON' ELSE 'OUI' END    

それ以外の

President_Eligible varchar(3) as CASE WHEN 1>2 THEN 'NON' ELSE 'OUI' END  
于 2012-05-26T16:55:51.217 に答える