2016-10-18 1 views
0

Une table de produits contient 8000 enregistrements avec 150 groupes. Comment récupérer tous les 5 à 10 enregistrements de chaque groupe de produits dans SAS ainsi que PROC SQLUne table de produits contient 8000 enregistrements avec 150 groupes. Comment extraire tous les 5 à 10 enregistrements de chaque groupe de produits

+0

Comment définissez-vous la * commande *, de sorte que nous puissions déterminer si un enregistrement particulier est le 5ème ou le 19ème, etc? –

+0

'row_number over (PARTITION BY id_groupe ORDER BY product_nr) AS rn' dans une sous-requête, et' WHERE rn> = 5 et rn <10' dans la requête externe. – joop

+0

@joop Ceci n'est pas supporté par SAS, cela fonctionne uniquement si vous utilisez un pass-through explicite vers une base de données. –

Répondre

1

Si je vous comprends bien alors quelque chose comme ça devrait résoudre le problème.

data YourData; 
do group=1 to 150 ; 
    do YourObs=1 to 54 ; 
    output; 
end; 
end; 
run; 

proc sort data=YourData Out=YourData_Sorted; 
by Group; 
run; 

Data Final; 
set YourData; 
by Group; 
if first.Group then Counter=0; 
Counter+1; 
if 5 <= Counter <= 10 ; 
drop Counter; 
run;