MySQL查询与分组依据以得到结果

时间:2018-07-16 06:12:18

标签: 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

先谢谢了。

1 个答案:

答案 0 :(得分:4)

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

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

相关问题