sql - 在子查询中分组查询以获取列值作为列名
问题描述
我在我的数据库中的数据:
| id| some_id| status|
| 1| 1 | SUCCESS|
| 2| 2 | SUCCESS|
| 3| 1 | SUCCESS|
| 4| 3 | SUCCESS|
| 5| 1 | SUCCESS|
| 6| 4 | FAILED |
| 7| 1 | SUCCESS|
| 8| 1 | FAILED |
| 9| 4 | FAILED |
| 10| 1 | FAILED |
.......
我运行查询以按 id 和状态分组以获得以下结果:
| some_id| count| status|
| 1 | 20| SUCCESS|
| 2 | 5 | SUCCESS|
| 3 | 10| SUCCESS|
| 2 | 15| FAILED |
| 3 | 12| FAILED |
| 4 | 25 | FAILED |
我想使用上面的查询作为子查询来获得下面的结果,其中不同的状态是列名。
| some_id| SUCCESS| FAILED|
| 1 | 20 | null/0|
| 2 | 5 | 15 |
| 3 | 10 | 12 |
| 4 | null/0| 25 |
任何其他获取最终数据的方法也值得赞赏。如果需要更多信息,请告诉我。
谢谢
解决方案
您可以借助以下工具在此处使用数据透视查询FILTER
:
SELECT
some_id,
COUNT(*) FILTER (WHERE status = 'SUCCESS') AS SUCCESS,
COUNT(*) FILTER (WHERE status = 'FAILED') AS FAILED
FROM yourTable
GROUP BY
some_id;
演示
推荐阅读
- c++ - 如何将 -fix 选项添加到 .clang-tidy 文件?
- c# - 当玩家进入敌人射程时,试图让敌人向玩家发射弹丸
- javascript - 我在 ejs 模板中的“错误”变量导致页面加载时出现“未定义”错误
- java - Hibernate:设置固定参数是一种好习惯吗?
- python - 使用 python 读取 txt 文件的每一行并将部分部分放入 csv 文件
- c# - 如何通过 Dotnet Core 2.2 在 Bot 服务中使用 Microsoft.Bot.Builder.Teams
- c++ - C++中的for循环
- r - 如何将不同的文件读入目录和 json 文件的结构
- python - 如何生成包括 NaN 在内的随机值?
- c - 为什么 prgram 不执行切换?