SQL QUERY - 从头开始​​过滤日期

Posted

技术标签:

【中文标题】SQL QUERY - 从头开始​​过滤日期【英文标题】:SQL QUERY - Filter date from the beginning 【发布时间】:2018-11-13 05:23:33 【问题描述】:

如何编写将前几天/几年的金额相加的 SQL 查询。从一开始就喜欢。

场景我想计算商店从开业那天起的累计销售额。

例子

SELECT SUM(AMOUNT) 
FROM TransactionTable 
WHERE TransactionDate = ???

我的计划是查询该表并获取最旧的交易日期记录,然后我将在WHERE 条件中使用它。您认为这是最好的解决方案吗?

【问题讨论】:

请提供样本数据和您预期的结果。你使用的是哪个版本的 SQL Server? 【参考方案1】:

您可以在下面尝试使用having min(transaction),它将为您提供交易首次开始的日期

select sum (amt) from
(
  SELECT SUM(AMOUNT) as amt from TransactionTable 
  group by TransactionDate 
  having TransactionDate between min(TransactionDate) and getdate()
)A

【讨论】:

【参考方案2】:

要计算商店从开业之日起的累计销售额,您可以使用 SUMOVER 子句

SELECT TransactionDate, SUM(AMOUNT) OVER (ORDER BY TransactionDate) AS AccumulatedSales
FROM TransactionTable 

【讨论】:

【参考方案3】:

使用group byTransactionDate

SELECT convert(date,TransactionDate), SUM(AMOUNT) from TransactionTable 
group by  convert(date,TransactionDate) 

【讨论】:

以上是关于SQL QUERY - 从头开始​​过滤日期的主要内容,如果未能解决你的问题,请参考以下文章

SQL Big Query 完全连接表以使用相同的过滤器

SQL 日期过滤器:当开始日期 = 结束日期时返回结果

如何使用 dojox.jsonPath.query 过滤/查询日期

使用 Power Query 过滤每月第一天和最后一天的日期

SQL - 在两个日期之间分组和过滤

过滤掉 SQL Query 中的重复行