/* Chapter 10: Views */

/* Jump to: Chapter 9    Table of Contents    Chapter 11 */

/*

*/

/* Chapter 10: Introductory Section */

/* Jump to: Next Section */

PROC SQL;                                                                       
CREATE TABLE preteen AS                                                         
SELECT       name as FName,                                                     
             sex,                                                               
             age,                                                               
             height FORMAT=6.1,                                                 
             weight FORMAT=6.1                                                  
FROM         sashelp.class                                                      
WHERE        age<13                                                             
;                                                                               
QUIT;                                                                           

/* Jump to: Top of Section     Top of Chapter */

/* 10.1: Defining Views */

/* Jump to: Next Section */

DATA v_eleven / VIEW=v_eleven;                                                  
SET preteen;                                                                    
WHERE age=11;                                                                   
KEEP fname sex age;                                                             
RUN;                                                                            
                                                                                
PROC SQL;                                                                       
CREATE VIEW  v_eleven_sql AS                                                    
SELECT       fname,                                                             
             sex,                                                               
             age                                                                
FROM         preteen                                                            
WHERE        age=11                                                             
;                                                                               
QUIT;                                                                           

/* Jump to: Top of Section     Top of Chapter */

/* 10.2: Using Views */

/* Jump to: Next Section */

PROC PRINT DATA=v_eleven;                                                       
RUN;                                                                            
                                                                                
PROC PRINT DATA=v_eleven_sql;                                                   
RUN;                                                                            
                                                                                
PROC SQL;                                                                       
SELECT       *                                                                  
FROM         v_eleven_sql                                                       
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
SELECT       *                                                                  
FROM         v_eleven                                                           
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
INSERT INTO  preteen                                                            
SET          fname='Roger', age=11, sex='M'                                     
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
SELECT       *                                                                  
FROM         v_eleven                                                           
;                                                                               
SELECT       *                                                                  
FROM         v_eleven_sql                                                       
;                                                                               
QUIT;                                                                           

/* Jump to: Top of Section     Top of Chapter */

/* 10.3: Inspecting Views */

/* Jump to: Next Section */

DATA VIEW=v_eleven;                                                             
DESCRIBE;                                                                       
RUN;                                                                            
                                                                                
/*                                                                              
DATA VIEW=v_eleven_sql;                                                         
DESCRIBE;                                                                       
RUN;                                                                            
*/                                                                              
                                                                                
PROC SQL;                                                                       
DESCRIBE VIEW v_eleven;                                                         
                                                                                
PROC SQL;                                                                       
DESCRIBE VIEW v_eleven_sql;                                                     
QUIT;                                                                           

/* Jump to: Top of Section     Top of Chapter */

/* 10.4: Changing a Table via a View */

/* Jump to: Next Section */

PROC SQL;                                                                       
INSERT INTO  v_eleven_sql                                                       
SET          fname='Laura', age=11, sex='F'                                     
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
SELECT       *                                                                  
FROM         preteen                                                            
WHERE        age=11                                                             
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
*                                                                               
INSERT INTO  v_eleven                                                           
SET          fname='Andrea', age=11, sex='F'                                    
;                                                                               
QUIT;                                                                           
                                                                                
DATA v_eleven_sql;                                                              
fname='Andrea'; age=11; sex='F';                                                
OUTPUT;                                                                         
STOP;                                                                           
MODIFY v_eleven_sql;                                                            
RUN;                                                                            
                                                                                
PROC PRINT DATA=preteen;                                                        
WHERE age=11;                                                                   
RUN;                                                                            
                                                                                
/*                                                                              
DATA v_eleven;                                                                  
fname='Gary'; age=11; sex='M';                                                  
OUTPUT;                                                                         
STOP;                                                                           
MODIFY v_eleven;                                                                
RUN;                                                                            
*/                                                                              

/* Jump to: Top of Section     Top of Chapter */

/* 10.5: Managing Library References */

/* Jump to: Next Section */

LIBNAME demolib "c:\temp\demolib";                                              
                                                                                
DATA work.subset                                                                
     demolib.subset;                                                            
SET sashelp.class(RENAME = (name=FName) );                                      
KEEP fname sex age;                                                             
IF sex='M' THEN OUTPUT work.subset;                                             
IF sex='F' THEN OUTPUT demolib.subset;                                          
RUN;                                                                            
                                                                                
DATA demolib.v_twelve / view=demolib.v_twelve;                                  
SET subset;                                                                     
WHERE age=12;                                                                   
RUN;                                                                            
                                                                                
PROC SQL;                                                                       
SELECT       *                                                                  
FROM         demolib.v_twelve                                                   
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
CREATE VIEW  demolib.v_twelve_sql AS                                            
SELECT       *                                                                  
FROM         subset                                                             
WHERE        age=12                                                             
;                                                                               
SELECT       *                                                                  
FROM         demolib.v_twelve_sql                                               
;                                                                               
QUIT;                                                                           
                                                                                
LIBNAME demolib CLEAR;                                                          
                                                                                
PROC SQL;                                                                       
CREATE VIEW  v_fourteen_sql AS                                                  
SELECT       *                                                                  
FROM         demolib.subset                                                     
WHERE        age=14                                                             
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
*                                                                               
SELECT       *                                                                  
FROM         v_fourteen_sql                                                     
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
CREATE VIEW  v_fourteen_sql AS                                                  
SELECT       *                                                                  
FROM         demolib.subset                                                     
WHERE        age=14                                                             
USING LIBNAME                                                                   
             demolib "c:\temp\demolib";                                         
;                                                                               
QUIT;                                                                           
                                                                                
PROC SQL;                                                                       
SELECT       *                                                                  
FROM         v_fourteen_sql                                                     
;                                                                               
QUIT;                                                                           
                                                                                
/*                                                                              
PROC CONTENTS DATA=demolib.subset;                                              
RUN;                                                                            
*/                                                                              

/* Jump to: Top of Section     Top of Chapter */