sql - 选择指定时间段内每个日期的最后记录值
问题描述
我有以下查询,假设返回给定日期范围内每天输入的最后金额。
内部查询本身可以正常工作,但是当我尝试对其进行 PIVOT 以便我可以将每个类别作为一列返回时,它不再显示最后一个条目,而是将每天输入的所有条目相加。
我认为数据透视函数所需的 SUM 聚合与内部查询结果相混淆,但我不知道如何欺骗它只给我内部查询重新调整的结果的总和。任何提示将不胜感激。
SELECT *
FROM (SELECT d.UserId, d.Amount, d.category
FROM Detail d
INNER JOIN (
select MAX(transdate) as Max_Entry
from Detail
where TransDate between '06/21/2021' AND '06/27/2021'
group by TransDate
) AS LastRecord ON d.TransDate = LastRecord.Max_Entry
) AS Cat
PIVOT (
SUM(Amount) -- this is what I think is nulling the max record
FOR Category
IN ( [textbooks],
[harlines],
[hours])
) AS Pvt
解决方案
推荐阅读
- asp.net - 如果使用了 Response.redirect,ScriptManager.RegisterStartupScript 不起作用
- php - 在 docker 下安装 composer-plugin-api 时出错
- r - 从列名列表中在现有 R 数据框中创建许多新的空列
- android - dprintf(INFO...) 或 dprintf(CRITICAL...) 在 Android LK 中的位置
- javascript - 从一个node.js服务器向另一台服务器发送请求时无法下载文件
- python - 有没有办法通过 QStateMachine QState 转换传递信号参数?
- node.js - 如何根据子数组中的“中间”值过滤大数组?(Node.js)
- reactjs - 通过子组件递增计数器并在其他子组件中重用计数器
- python - 在解决回归问题时在 python 中使用虚拟变量标准化数据集
- r - 如何为每个栅格网格单元选择一个点?