Mục lục
Sub query
Tạo biến Macro trong PROC SQL
Tạo biến macro
Như ta đã biết trong phần Biến Macro. Các biến Macro trong SAS được sử dụng để thay thế các string lặp lại nhiều lần. Mục này sẽ nói đến việc tạo biến macro bằng các sử dụng PROC SQL
.
Biến Macro có thể được tạo ra dễ dàng bằng PROC SQL
bằng cú pháp như sau:
SELECT [AGG FUNC]
INTO :MACRO_VAR
FROM [TABLE]
Ví dụ như sau:
PROC SQL NOPRINT;
SELECT MEAN(MSRP) INTO :MEAN_MSRP FROM SASHELP.CARS;
QUIT;
Đoạn code lấy giá trị trung bình của cột MSRP và gán vào macro MEAN_MSRP
. Có thể kiểm tra lại bằng code:
%PUT &=MEAN_MSRP;
Có thể tạo nhiều biến macro trong cùng một câu lệnh như sau:
PROC SQL NOPRINT;
SELECT MIN(MSRP), MEAN(MSRP), MAX(MSRP)
INTO :MIN_MSRP, :MEAN_MSRP, :MAX_MSRP
FROM SASHELP.CARS;
QUIT;
/*Check values of macro variables:*/
%PUT &=MIN_MSRP;
%PUT &=MEAN_MSRP;
%PUT &=MAX_MSRP;
Kết quả nhận được như sau:
Chú ý rằng, giá trị của macro MIN_MSRP, MAX_MSRP
có khoảng trắng ở đầu. Do đó để chính xác hơn ta sử dụng TRIMMED
:
PROC SQL NOPRINT;
SELECT MIN(MSRP), MEAN(MSRP), MAX(MSRP)
INTO :MIN_MSRP TRIMMED, :MEAN_MSRP TRIMMED, :MAX_MSRP TRIMMED
FROM SASHELP.CARS;
QUIT;
/*Check values of macro variables:*/
%PUT &=MIN_MSRP;
%PUT &=MEAN_MSRP;
%PUT &=MAX_MSRP;
Kết quả nhận được đã chính xác hơn:
Gán nhiều giá trị vào biến Macro
PROC SQL
có thể xuất danh sách các giá trị ra biến Macro. Cú pháp như sau:
SELECT [COLUMN]
INTO :MACRO_VAR SEPARATED BY [DELIMITER]
FROM [TABLE]
Ví dụ
PROC SQL NOPRINT;
SELECT DISTINCT(ORIGIN)
INTO :ALL_ORIGIN SEPARATED BY ", "
FROM SASHELP.CARS;
QUIT;
%PUT &=ALL_ORIGIN;
Kết quả nhận được là ALL_ORIGIN=Asia, Europe, USA
.