0
votes

Comment choisir une gamme de colonnes dans une déclaration de cas dans ProC SQL?

J'ai environ 80 colonnes Noms diag1 à diag80. Je me demande comment puis-je choisir seulement 30 colonnes et appliquer une déclaration de cas dans ProC SQL. Le code suivant produit une erreur car il ne comprend pas la plage.

proc sql;
  create table data_WANT as
  select *,
    case 
      when **diag1:diag30** in ('F00','G30','F01','F02','F03','F051') then 1
      else 0 
    end as p_nervoussystem
  from data_HAVE;
quit;


2 commentaires

Pas sûr de SAS, mais dans SQL Server, vous devez utiliser des tables système si vous souhaitez sélectionner des colonnes avec certaines rages de manière dynamique.


Vous ne pouvez pas utiliser de listes de variable avec SQL. Utilisez simplement une étape de données SAS normale à la place.


3 Réponses :


-1
votes

Essayez-les sys.tables et sys.columns et filtrez vos colonnes.

Sélectionnez * à partir de sys.tables SYS.TABLE SYSTES.COLAUNS SUR COLONMES.OBJECT_ID = TABLES.OBJECT_ID


0 commentaires

1
votes

Vous avez deux problèmes avec cette tentative de syntaxe. Tout d'abord, que les listes variables ne sont pas prises en charge par PROC SQL (car elles ne sont pas prises en charge par SQL Syntaxe). La seconde est qu'il n'ya pas de syntaxe simple pour rechercher n variables pour une liste de chaînes de M.

Vous aurez besoin d'une boucle d'une sorte. Ce sera beaucoup plus facile dans le code SAS que dans SQL.

Par exemple, vous pouvez créer un tableau pour référencer vos 30 variables que de boucler sur les variables Vérification si chacune a une valeur dans la liste des valeurs. Vous pouvez arrêter de vérifier une fois que l'on a été trouvé. xxx


0 commentaires

0
votes

Le modèle inverse à @TOM recherche d'un code de diagnostic du système nerveux:

  • via Findw sur une concaténation des diagnostics observés
  • via quelc sur un tableau des diagnostics observés xxx

0 commentaires