sql - 如何将单行分组为一个?
问题描述
再会。我有一个包含列的表:年份、项目、计数。假设我在 db 表中有以下行:
2007 item1 value1
2007 item2 value2
2008 item1 value3
2008 item2 value4
2009 item1 value5
2009 item2 value6
1个查询是否有可能得到这样的结果:
2007 value1 value2
2008 value3 value4
2009 value5 value6
我知道如何分组等等,问题是每年的项目数量可能不同,所以,假设我们总共有 5 个项目,我需要以下输出(如果找不到,添加 0):
2007 value1 value2 0 0 0
2008 0 value3 0 value4 0
解决方案
你似乎想要这些方面的东西:
select year
coalesce(sum(value) filter(where item = 'item1'), 0) as value1,
coalesce(sum(value) filter(where item = 'item2'), 0) as value2,
coalesce(sum(value) filter(where item = 'item3'), 0) as value3,
coalesce(sum(value) filter(where item = 'item4'), 0) as value4
from mytable
group by year
这假设它value
是数字数据类型。
推荐阅读
- java - 将数据源 Oracle 11g 配置到 Apache Tomcat 7 (7.0.82) 时出错
- string - 替换序言中第二次出现的子字符串
- android-studio - Android模拟器:wifi连接,没有互联网
- amazon-web-services - 使用 GSI 查询 DynamoDB 表时出现问题
- python - 如何将类别矩阵可视化为 RGB 图像?
- javascript - 节点如何处理并发请求?
- python - C++ 应用程序因嵌入式 Python 代码而崩溃
- python - 包含绘图设置的 matplotlib 字典
- python - 我怎样才能重用这个 tensorflow 层?
- javascript - 滚动时找到滚动位置