Bonjour,
Je souhaite ajouter une colonne à une table: cette colonne correspond à un compteur obtenu à partir d'une autre colonne de la même table.
Méthode 1:
Je fais une proc sql en créant une 2ème table avec mon compteur
=> ça marche mais je voudrais éviter d'avoir à créer une 2ème table.
Code correspondant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 proc sql; create table t2 as select *,count(seq) as countseq from t1 group by id; quit;
Méthode 2:
Je fais une proc sql create sur la table 1 qui existe déjà
=> ça marche mais j'obtiens un warning et c'est pas génial:
WARNING: This CREATE TABLE statement recursively references the target table.
A consequence of this is a possible data integrity problem.
Code correspondant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 proc sql; create table t1 as select *,count(seq) as countseq from t1 group by id; quit;
Méthode 3:
Je fais une proc sql alter table sur la table 1 qui existe déjà puis un update
=> le alter table fonctionne mais pas l'update:
WARNING: A value expression of the SET clause references the data set being updated.
ERROR: You cannot reopen WORK.T1.DATA for update access with member-level control because
WORK.T1.DATA is in use by you in resource environment SQL.
ERROR: PROC SQL could not undo this statement if an ERROR were to happen as it could not
obtain exclusive access to the data set. This statement will not execute as the SQL
option UNDO_POLICY=REQUIRED is in effect.
Code correspondant
Merci de votre aide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 proc sql; alter table t1 add countseq integer format=3.; quit; proc sql; update t1 set countseq = (select count(seq) from t1 group by id); quit;
Partager