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

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

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

例子

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

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

【问题讨论】:

  • 请提供样本数据和您预期的结果。你使用的是哪个版本的 SQL Server?

标签: sql 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) 
      

      【讨论】:

        猜你喜欢
        • 2020-08-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-19
        • 1970-01-01
        • 2015-10-19
        • 1970-01-01
        • 2022-12-06
        相关资源
        最近更新 更多