2014-10-09 63 views
0

我在兩個不同的庫中有相同的表名,我想在開始時使用條件來選擇要使用的庫(SAS Enterprise Guide)。是否有可能使用庫的變量來實現類似下面的內容?SAS:條件選擇庫

IF(TXT =「TST「)

SELECT * FROM TST.TableName

ELSE

選擇*形式DEV.TableName

回答

1

要做到這一點,最好的方法變化的基礎上什麼定義了txt。如果您根據用戶輸入選擇此選項(在您的示例中,用戶選擇TEST或DEV(或PROD)數據庫指向),那麼Enterprise Guide中的最佳方式是創建提示以創建宏變量,或其次d直接創建一個宏變量。

本科克倫的論文Be Prompt Now: Creating and Using Prompts in SAS Enterprise Guide是一個很好的介紹該主題,以及其他來源網上。您可以設置一個提示,詢問用戶要指向哪個環境,然後它將使用您選擇的值定義一個宏變量。然後將提示添加到您需要它與之相關的程序中,並且它可以正常工作。

所以在你的情況下,你可以設置一個變量&env.,其中包含表名(TSTDEV)的值。你也可以讓它控制libname值本身(所以你不改變使用哪個libname,但是你改變libname指向哪個文件夾或數據庫)。


如果您在EG不是,或者如果你不想使用提示這是什麼原因,你同樣可以自己指定的宏觀變量。

%let env = TST; 

無論哪種方式,一旦你得到&ENV=TST建立,你只需要使用它的開放代碼:

proc sql; 
    select * from &ENV..TableName; 
quit; 

或者,就像我說的,你可以分配LIBNAME基礎上,宏變量並在代碼中使用單個libname;這通常更清潔,儘管它留下了自己的困難。

+0

非常感謝您的好回答! :) – Sebastian 2014-10-10 10:06:14