首页 > 解决方案 > SQL Server 查询日期和金额

问题描述

我正在尝试创建一个基于以下信息的 SQL 查询。

我每天都有一笔买卖文章的金额。我正在尝试查询显示:

每“文章”每“月”的总“金额”

“金额”应拆分为“正数”和“负数”,分别将所有正数“金额”和所有负数“金额”相加。

日期格式为“yyyy-mm-dd 00:00:00.000”

我尝试了以下

SELECT article, date, SUM (amount) Total FROM shop group by FORMAT(date, 'yyyy_MM'), article

我收到以下消息

“日期在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中”

如果我从查询中取出日期,一切正常,它会计算总数。

标签: sqlsql-server

解决方案


您需要一个所谓的日期单射函数:将一个月中的所有日期转换为相同值的方法,并且您需要在 SELECT 和 GROUP BY 子句中使用LAST_DAY()是一个不错的函数。顺便说一句,也是如此DATE_FORMAT(date, '%Y-%m')

尝试这个:

   SELECT article, LAST_DAY(date) month_ending, SUM (amount) Total 
     FROM shop
    GROUP BY LAST_DAY(date), article

这里有一个关于这个问题的解决方案的一般性文章。


推荐阅读