gpt4 book ai didi

sql - 仅当存在 SAS SQL 时才选择变量

转载 作者:行者123 更新时间:2023-12-04 03:15:49 25 4
gpt4 key购买 nike

PROC SQL;
CREATE TABLE SET3 AS
SELECT
a.VAR1 , b.VAR1 AS P_VAR1 ,
a.VAR2
FROM SET1 AS a FULL JOIN SET2 AS B
ON a.VAR1 = b.VAR1
;
QUIT;

上面的代码创建了一个名为 SET3 的表,其中包含来自 2 个数据集的 VAR1 以及 VAR2,其中 a.VAR1=b.VAR1。

我希望此代码运行以包含 VAR2 如果它可用。有时并非如此,因此代码会崩溃。

我可以通过使用一些宏编写两次代码来做到这一点,但想知道是否有可以使用的快速 SQL 语法。

非常感谢!

最佳答案

一个选项是创建一个宏变量,该变量将具有 VAR1 或 VAR1,VAR2,具体取决于它是否存在。 dictionary.columns 是您可以从中获取的元数据表,它在 proc sql 中可用。

最终数据的顺序会略有不同(a.VAR1、a.VAR2、b.VAR1),但希望这不会成为问题。

proc sql noprint;
select cats('a.',name) into :varlist separated by ','
from dictionary.columns
where libname='WORK' and memname='SET1' and name in ('VAR1','VAR2');
quit;

%put &=varlist.;

PROC SQL;
CREATE TABLE SET3 AS
SELECT
&varlist. , b.VAR1 AS P_VAR1
FROM SET1 AS a FULL JOIN SET2 AS B
ON a.VAR1 = b.VAR1
;
QUIT;

关于sql - 仅当存在 SAS SQL 时才选择变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41098818/

25 4 0
文章推荐: sql - 估计的子树成本大幅下降,糟糕的优化
文章推荐: c# - 为什么不能将 Action 委托(delegate)用作线程池的 WaitCallback?