我有列 DATETIME、REGISTER_NUM、STORE_ID。我正在尝试创建一个变量来计算当前事务过去 5 分钟内发生的事务数。
这是不正确的,但我真的需要帮助,我因缺乏经验而气馁。
SELECT *
WHERE
COUNT(DATETIME >= DATEADD(mi, -5, GETDATE())) AS 5_MIN_INTERVAL_CT
也许你正在寻找这样的东西:
SELECT COUNT(*) AS 5_MIN_INTERVAL_CT
FROM SomeTable
WHERE DATETIME >= DATEADD(mi, -5, GETDATE())
DATEADD
并且GETDATE
不是 SAS 函数;您正在寻找的等效功能是INTNX
用于间隔并DATETIME
获取当前系统时间戳。因此,假设您有一个名为mydata的 SAS 数据集和一个名为datetime的变量,这将返回前五分钟的记录数:
proc sql;
select count(*) as FIVE_MIN_INTERVALS /* SAS names begin with letters */
from mydata
where datetime >= INTNX('MINUTE',DATETIME(),5)
;
退出;
要获取您将使用的交易数量
SELECT COUNT(*)
FROM YourTransactionTable
WHERE [DATETIME] >= DATEADD(MINUTE, -5, GETDATE())
正如 Rob 在他的评论中提到的那样,您的查询中没有 FROM TableName 。您必须在查询中提及您从哪个表中选择数据。