MySQL 查询与 Group by 以获得指定结果

标签 mysql sql

我需要编写一个查询,该查询在分组查询后返回一行。例如,我有一个表tblTest,其中包含列:

Id, Name,   Type,  Amount
1, Receipt, Cash   100
2, Receipt, Card   200
3, Receipt, Cheque 250
4, Receipt, Card   150
5, Receipt, Cash   100
6, Payment, Cash   300
7, Payment, Cheque 400

按查询分组后

Select Name,Type,Amount from tblTest where 1=1 Group by Type

它返回我,

1 Receipt  Cash   200
2 Receipt  Card   350
3 Receipt  Cheque 250
4 Payment, Cash   300
5 Payment, Cheque 400

但是我需要返回的是类似的东西

Name    Cash Card Cheque
Receipt 200  350  250
Payment 300  NULL 400

提前致谢..

最佳答案

您只需要一个基本的数据透视查询和一个求和:

SELECT
    Name,
    SUM(CASE WHEN Type = 'Cash'   THEN Amount ELSE 0 END) Cash,
    SUM(CASE WHEN Type = 'Card'   THEN Amount ELSE 0 END) Card,
    SUM(CASE WHEN Type = 'Cheque' THEN Amount ELSE 0 END) Cheque
FROM tblTest
GROUP BY
    Name;

enter image description here

Demo

关于MySQL 查询与 Group by 以获得指定结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51355560/

相关文章:

mysql - 搜索文档内容的建议 - Windows Search 好用吗?简单的MySQL?

sql - 在 Sybase 过程中从表失败中选择 TOP 1 *

mysql - SQL求和函数(意外的SUM_SYM,期望END_OF_INPUT))

mysql - Symfony4 - 计数查询的 Doctrine 分页性能低(634484 条记录)

php - PDO 预处理语句返回空数组

mysql - 如何将此 SQL 查询编写为 JPA 查询

php - 左连接中的两个表都有 id 字段。尝试从第一个数据库中提取 id 字段,但获取第二个数据库

mysql - 冗余索引怎么办

sql - 优化sql查询

mysql - 在 PhpMyAdmin 中使用 SQL 删除列出的记录中的重复项