【问题标题】:I want to get the first and last date from column DATETIME grouped by columns BANKCASENUMBER and BALANCE我想从按 BANKCASENUMBER 和 BALANCE 列分组的 DATETIME 列中获取第一个和最后一个日期
【发布时间】:2019-06-26 13:05:10
【问题描述】:

我正在尝试根据 SQL 中的 BANKCASENUMBER 和 BALANCE 列获取 DATETIME 的第一个和最后一个日期。

到目前为止我的代码是:

CREATE TABLE WORK.QUERY_FOR_FILTER_FOR_QUERY_FOR_S AS 
       SELECT t1.ACCOUNTID, 
          t1.BALANCE, 
          t1.DATETIME, 
          t2.TYPE, 
          t2.BANKCASENUMBER
      FROM WORK.FILTER_FOR_QUERY_FOR_SORTSORTED t1
           INNER JOIN TALLY.ACCOUNTDETAILS t2 ON (t1.ACCOUNTID = t2.ACCOUNTS1);

有什么办法吗?

【问题讨论】:

  • 使用 MAX() 和 MIN(),做一个 GROUP BY。
  • 标记您的 RDBMS(如 sql-server、oracle、postgre)
  • 您想从您的日期时间值中提取日期值吗?或者最小和最大日期时间值对你有用吗?
  • “使用 MAX() 和 MIN(),进行 GROUP BY。” 否则请参阅 Why should I provide a Minimal Reproducible Example for a very simple SQL query?,因为仅向我们提供查询不足以了解您的问题和/或你的结果是什么
  • 使用 DATEPART() 函数从日期时间值(秒数)中获取日期值(天数)。请记住附加适当的格式,以便值像日期一样显示给人类原始数字。

标签: sql sql-server sas enterprise-guide


【解决方案1】:

使用GROUP BY 根据您在SQL-Server 中的需要对列进行分组,并使用您不希望在分组条件中出现的Aggregate Functions

  SELECT 
      t1.ACCOUNTID, 
      SUM(t1.BALANCE), 
      MIN(t1.DATETIME) AS FirstDate, 
      MAX(t1.DATETIME) AS LastDate,
      t2.TYPE, 
      t2.BANKCASENUMBER
  FROM WORK.FILTER_FOR_QUERY_FOR_SORTSORTED t1
       INNER JOIN TALLY.ACCOUNTDETAILS t2 ON (t1.ACCOUNTID = t2.ACCOUNTS1);

  GROUP BY t1.ACCOUNTID, t2.TYPE, t2.BANKCASENUMBER 

【讨论】:

  • @RaymondNijland 我的意思是说columns,他不想像balance 这样的分组标准。我不是说过滤记录。而且我也更正了我的答案
  • 很公平,然后我误解了你的回答和你的意思..
猜你喜欢
  • 2014-12-14
  • 2018-08-12
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多