Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据另一列获取最新日期_Sql_Sas - Fatal编程技术网

Sql 根据另一列获取最新日期

Sql 根据另一列获取最新日期,sql,sas,Sql,Sas,我有一个数据集,其中包括一列DATETIME和一列BANKCASENUMBER。我想为每个BANKCASENUMBER选择包含最新日期的行 这就是我尝试过的: PROC SQL; CREATE TABLE WORK.QUERY_FOR_WORK_QUERY_FOR_ACCOUNT AS ORDER BY t1.DATETIME LIMIT 1 SELECT t1.LOGINNAME, t1.FORENAME, t1.SURNAME,

我有一个数据集,其中包括一列DATETIME和一列BANKCASENUMBER。我想为每个BANKCASENUMBER选择包含最新日期的行

这就是我尝试过的:

PROC SQL;    
CREATE TABLE WORK.QUERY_FOR_WORK_QUERY_FOR_ACCOUNT AS 
   ORDER BY t1.DATETIME LIMIT 1
   SELECT t1.LOGINNAME, 
      t1.FORENAME, 
      t1.SURNAME, 
      t1.BANKCASENUMBER, 
      MAX(t1.DATETIME), 
      t1.'Inbound/outbound'n, 
      t1.'succesvol?'n
  FROM WORK.WORK_QUERY_FOR_ACCOUNTACTIVITIES t1
  GROUP BY t1.BANKCASENUMBER;
QUIT;

返回的表应为每个BANKCASENUMBER的行添加latset DATETIME。所以每个银行账号都应该出现一次。

我相信这就是你要找的。其思想是获取子查询中每个银行案例编号的最新时间戳,并将其连接到主表

PROC SQL;    
CREATE TABLE WORK.QUERY_FOR_WORK_QUERY_FOR_ACCOUNT AS
    SELECT t1.LOGINNAME, 
      t1.FORENAME, 
      t1.SURNAME, 
      t1.BANKCASENUMBER, 
      t1.DATETIME, 
      t1.'Inbound/outbound'n, 
      t1.'succesvol?'n
    FROM WORK.WORK_QUERY_FOR_ACCOUNTACTIVITIES t1
    JOIN (
        SELECT  t2.bankCaseNumber,
                MAX(t2.dateTime) as maxDateTime
        FROM WORK.WORK_QUERY_FOR_ACCOUNTACTIVITIES t2
        GROUP BY t2.BANKCASENUMBER
    ) m
        ON  m.bankCaseNumber = t1.bankCaseNumber
        AND t1.dateTime = m.maxDateTime
;
QUIT;

这似乎有点简单。由于我们是按LOGINNAME分组的,having语句将引用每个组中的max(DATETIME)

proc sql noprint;
   create table QUERY_FOR_WORK_QUERY_FOR_ACCOUNT as
     select * from WORK_QUERY_FOR_ACCOUNTACTIVITIES
       group by LOGINNAME
       having DATETIME = max(DATETIME);
quit;

你用的是什么产品?“SQL”只是一种查询语言,而不是特定数据库产品的名称(并且您的代码是无效的标准SQL)。请为您正在使用的数据库产品添加…如果将光标悬停在
SQL
标记上,您将看到它要求您指定您正在使用的SQL版本。例如,MySQL的做法与SQL Server不同。另外,当你尝试一些不起作用的事情时,请描述一下你预期会发生什么,以及实际发生了什么。在您的情况下,您可能会收到一条错误消息,该消息应始终包含在您的问题中。我编辑了标记,我正在SAS enterprice Guide中使用sql我包含了data@Parfait-如果您注意到细节,您会看到SAS在我们的评论后被标记,正如前面提到的
proc-sql
。我查看了这段代码的结果,但这不是我想要的。这只是给了我每个BANKCASENUMBER分组的所有日期时间。我只想提取每个银行账号的最新日期时间。@AtalAtmar-我想你弄错了。子查询为每个
BankCaseNumber
查找最近的
日期时间
,外部查询为那些
BankCseNumber、日期时间
组合查找完整的匹配记录。