sql - 将行转换为列并使用 group by 求和
问题描述
我有一个带有列的表ID
,WorkingDate
其中AmountReceived
数据显示为
ID WorkingDate AmountReceived
-------------------------------------
1 13/April/2021 201999.01
2 14/Arpil/2021 1099.02
现在,我试图展示它
13/April/2021 14/April/2021 15/April/2021
--------------------------------------------------
201999.01 1099.02 102.09
我试过这个
select AmountReceived, WorkingDate
from Orders o
select distinct o.WorkingDate, sum(AmountReceived) over (partition by WorkingDate) as total
from Orders o
group by WorkingDate, AmountReceived
但它会引发聚合错误。
解决方案
使用PIVOT运算符,您可以实现您想要的
select *
from
(
select o.WorkingDate, o.AmountReceived
from Orders o
) o
pivot
(
sum(AmountReceived)
for WorkingDate in ([2021-04-13], [2021-04-14], [2021-04-15])
) p
推荐阅读
- express - 错误:使用 Chai 和 Mocha 发送后无法设置标题
- html - 如何使用 PDFRreactor 构建具有复杂 html 和样式的 pdf 标题(左上角和右上角)?
- git - `-X 耐心` vs `-X diff-algorithm=patience` 和`git merge-recursive`
- r - 为什么使用 sapply 循环时formals() 不需要 names()?
- python - Python集合操作 - 集合的补并
- linkedin - LinkedIn 个人资料 API 返回 403
- php - 用户访问网站时无法加载我的 Python 程序
- python - 用 Python 编程:控制步进电机 + Raspberry Pi Zero + L293D IC
- c# - 重用旧 DbContext 类名似乎使用旧类的模型
- java - 从文本字段矩阵中获取文本