sql - 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 子句中”
如果我从查询中取出日期,一切正常,它会计算总数。
解决方案
您需要一个所谓的日期单射函数:将一个月中的所有日期转换为相同值的方法,并且您需要在 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
这里有一个关于这个问题的解决方案的一般性文章。
推荐阅读
- python - 使用分类数据和数值数据绘制 pandas 数据帧的散点图
- jquery - Datables 从 Ajax 请求中渲染嵌套对象和数组
- python - scrapyd 部署错误:pkg_resources.DistributionNotFound
- node.js - "zip -r xxx.zip xxx" 永不停息
- reactjs - TypeError:无法读取 ReactJs 中未定义的属性“page_title”
- android - 为什么要改造在主要活动中出现错误?
- datagrid - 具有未知数据集的动态清晰度 DataGrid
- firebase - 为什么节点模块在 firebase 模拟器上工作但在部署后不工作?
- neo4j - 无法使用 apoc.uuid.install(),错误原因:java.lang.NullPointerException
- amazon-web-services - 在导航器内的页面列表中找不到 MaterialPage