问题标签 [proc-sql]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
3505 浏览

import - SAS proc 导入缺少前导零

我正在尝试使用 proc import ( SAS ) 将数字从 csv 文件导入 sas 数据集,但导入后我所有的前导零都消失了。

例如,

'0123456' 导入后我只会得到 '123456'

0 投票
2 回答
270 浏览

sql - 子查询在连接两个子集时产生比预期更多的结果

在两个表上执行左外连接语句后,我可能会收到更多的 ID。

背景:我已经从较大的数据集中缩小了两个表。以下是我在从较大的数据集中进行选择后用来获取可能的 ID 的查询。我正在尝试根据 personID 将两个数据集连接在一起。我正在执行 LEFT JOIN,因为我想保留 smallset 表中的所有数据,同时将其与缩小数据表中的数据配对。

在对较大数据集的子集运行此查询时,我收到以下 ID:

现在,在运行第二个查询时,我收到以下信息:

我收到以下查询:

到目前为止,一切都很好。一切都如预期的那样。但是,当我尝试加入这两个子集时运行下一个子查询时,会得到意想不到的结果。

此结果中包含的数据未包含在任一先前查询中。特别是 ID 414854148941496。我不知道为什么会出现这些 ID,因为当我将查询分解为单独的查询时,我得到了我需要的 ID。

0 投票
2 回答
1857 浏览

indexing - 为什么 SAS 不使用我的索引?

我有一个按字段“A”排序的大型 SAS 数据集。我想做一个引用字段“A”和“B”的查询。为了提高性能,我在“B”上创建了一个索引。这会导致一条无用的消息:

当然,对 B 进行排序会有所帮助。但这不是重点。索引适用于您已经在其他字段上排序的情况。

在类似的查询中,SAS 给出以下消息:

关于让 SAS 使用我的索引的任何提示?在一种情况下,查询需要 2 小时才能运行,因为 SAS 不使用索引。

0 投票
2 回答
85356 浏览

sas - 限制 PROC SQL 中的结果

我正在尝试使用 PROC SQL 来查询具有数亿条记录的 DB2 表。在开发阶段,我想对这些记录的任意小子集(比如 1000)运行我的查询。我尝试使用 INOBS 来限制观察结果,但我相信这个参数只是限制了 SAS 正在处理的记录数。我希望 SAS 只从数据库中获取任意数量的记录(然后处理所有记录)。

如果我自己编写 SQL 查询,我会简单地使用SELECT * FROM x FETCH FIRST 1000 ROWS ONLY ...(相当于SELECT TOP 1000 * FROM xSQL Server 中的)。但是 PROC SQL 似乎没有这样的选项。获取记录需要很长时间。

问题:如何指示 SAS 任意限制从数据库返回的记录数。

我读过 PROC SQL 使用 ANSI SQL,它没有任何关于行限制关键字的规范。也许 SAS 不想努力将其 SQL 语法转换为特定于供应商的关键字?没有解决办法吗?

0 投票
3 回答
1881 浏览

sql - SAS:选择多列值的频率

我有这个问题,但是在 SAS 中。要使用此问题中提供的示例,我有 5 列名称(name_1、name_2 等),并希望输出一个列表,其中名称按频率降序排列:

我回答了上面提到的问题,并用“proc sql;”包围了它。和“退出;”:

但我得到:

我正在使用 SAS 9.2。

想法?谢谢您的帮助!

0 投票
2 回答
1438 浏览

sas - 为什么MAX函数在proc sql中去掉SAS变量格式?

考虑以下:

对我来说似乎不一致。为什么 proc sql 在这种情况下保留格式?这种行为是否记录在案?

0 投票
2 回答
6389 浏览

sql - SAS proc sql连接和连接

我正在尝试在 SAS 结构中为金融系统数据构建数据模型。这个想法是将ID作为字符表达式保存在表中,然后从另一个表中为它们proc sql构建一个 -应该以表达式开头。应该是这样的:INNER JOINLIKEIDs'ID%'proc sql

不幸的是,它应该是这样的:... LIKE 'X.ID%' 有没有办法在 SAS 代码中构建这样的表达式?

0 投票
1 回答
5393 浏览

sql - SAS Proc SQL 获取与特定日期最近的记录

我有2个表如下:

表1、用户列表表:

表 2 描述了用户升级历史:

从这 2 个表中,我需要生成一个与表 1 类似的结果表,但添加一个列,该列对过去 3 个月或特定日期 3 个月以上的 A 类型用户进行分类。例如,结果将是:

一般的想法是:

  • 我需要将表 1 中的月份列和年份列转换为日期格式,如 3/2010
  • 减去与上述日期(2/2010)最接近的促销日期的新转换值,以获得用户被提升的天数
  • 比较 90 天来对他的晋升持续时间进行分类

我目前遇到了两个问题。

我不知道将月列和年列转换为月/年日期格式的最佳方法。

假设我已经从 table1 转换了月/年列,我使用 Max 函数从 table2 获取最近的日期。据我所知,max函数对性能不好,那么除了使用max之外,还有其他解决方案吗?在mysql中,使用Limit 1很容易解决,但是SAS proc-sql不支持Limit。proc-sql中是否有任何等效的限制?以下是我目前正在考虑的代码。

如您所见,我需要将 table1 与其他表左连接,因此我使用子查询,这也是一个糟糕的性能,但我不知道是否有其他方法。帮助和建议表示赞赏。

0 投票
5 回答
14871 浏览

sql - SQLselect count with case/when

我有下表:

我想创建一个新表来计算每种类型的行数。为每种类型计数创建每个表很容易,但我想让它的外观和性能更好,所以可以在一个查询中做到这一点吗?我想出了一个像下面这样的查询,但它不起作用。该错误表示“WHEN 子句 2 的结果与前面的结果的数据类型不同”。帮助表示赞赏,并提前感谢。

0 投票
4 回答
8996 浏览

sql - 没有按 SELECT 中的所有非聚合列分组的 HAVING 子句

在没有按所有非聚合列分组的 HAVING 子句中,SELECT 我经常遇到具有 id 列和月份列以及许多其他指标的表。我根据其他列清除了某些行。我只想识别拥有所有 12 个月数据的 ID,所以我执行以下操作:

它似乎对我有用,但我想知道这种方法是否有任何危险。我知道我可以加入只有 id 和 id 计数的聚合子查询,但是这种方法更容易向非 sql 用户解释。

一般来说,您可以使用HAVING仅在语句中包含几个列GROUP BY且在语句中没有聚合函数的子句SELECT吗?