SAS 宏 RSUBMIT UNION 查询
SAS Macro RSUBMIT UNION query
我一直在根据有关 UNION 查询与 IN/OR 方法的一些信息修改一项大型工作。通过将 IN 语句移动到 UNION 查询中,我已经能够很好地减少我的 RSUBMIT 查询,因为通过一个查询的前一个 IN 语句花费了 35 分钟,而 8 个联合查询花费了 9 分钟。
由于其中一些 IN 语句涉及越来越多的值,我试图使用宏工具来缩短代码,但我遇到了问题。
下图是宏的一个片段(单独查询),你马上就会看到我的问题。
*宏正在 RSUBMIT 中编译,所以我们 "should be good"...但是明显的红色文本告诉我这是某种基于 UNION 语句的非法语法。
我运行这部分代码只是为了看,事实上,运行...但仅适用于由宏的第一个参数表示的第一个查询(在本例中为 'IDRPR' 字符串),则无法执行后续 parameters/queries.
的所有后续宏调用
我确实尝试将每个 "UNION" 语句括在一对括号中以促进合法语法。乍一看,它似乎 运行 正确,因为我在增强编辑器中没有看到红色文本 -
但出现与上述相同的问题...第一次宏调用仅执行一次。我在这里缺少什么,或者如何以更好、更有效的方式执行?
SAS 中的语法突出显示是一个有用的指南,但在某些情况下(尤其是宏代码)它是错误的。测试代码是否有效的最佳方法是 运行 它。
我不了解 DB2,但我怀疑您的原始代码中的一个问题是每次宏调用后的分号。
尝试编码 %OPEN_IDR('IDR_PR')
宏调用后不带分号。分号可能会破坏您的 DB2 查询语法。
您不能使用关键字 UNION
启动 SQL 语句。删除多余的分号。
我一直在根据有关 UNION 查询与 IN/OR 方法的一些信息修改一项大型工作。通过将 IN 语句移动到 UNION 查询中,我已经能够很好地减少我的 RSUBMIT 查询,因为通过一个查询的前一个 IN 语句花费了 35 分钟,而 8 个联合查询花费了 9 分钟。
由于其中一些 IN 语句涉及越来越多的值,我试图使用宏工具来缩短代码,但我遇到了问题。
下图是宏的一个片段(单独查询),你马上就会看到我的问题。
*宏正在 RSUBMIT 中编译,所以我们 "should be good"...但是明显的红色文本告诉我这是某种基于 UNION 语句的非法语法。
我运行这部分代码只是为了看,事实上,运行...但仅适用于由宏的第一个参数表示的第一个查询(在本例中为 'IDRPR' 字符串),则无法执行后续 parameters/queries.
的所有后续宏调用我确实尝试将每个 "UNION" 语句括在一对括号中以促进合法语法。乍一看,它似乎 运行 正确,因为我在增强编辑器中没有看到红色文本 -
但出现与上述相同的问题...第一次宏调用仅执行一次。我在这里缺少什么,或者如何以更好、更有效的方式执行?
SAS 中的语法突出显示是一个有用的指南,但在某些情况下(尤其是宏代码)它是错误的。测试代码是否有效的最佳方法是 运行 它。
我不了解 DB2,但我怀疑您的原始代码中的一个问题是每次宏调用后的分号。
尝试编码 %OPEN_IDR('IDR_PR')
宏调用后不带分号。分号可能会破坏您的 DB2 查询语法。
您不能使用关键字 UNION
启动 SQL 语句。删除多余的分号。